Git的版本控制

【Git】版本控制工具——Git介绍及使用 Git教程 阅读详情
学习要求:
1:学会使用Git工具,并且了解Git的网络结构。
2:熟练使用Git来进行版本控制管理,掌握Git的常规操作,Git的分支操作,Git的远程同步,基于Git的Android源码下载理解,学会用Git下载课程资料,上传自己的代码。理解Git分布式版本控制的概念理解。

Git的结构原理:
1.快照而不是比不同

2.几乎所有的操作都是本地的
3.Git文件的三个状态

4.文件状态生命周期


         不符合的                      还未修改的                      已经修改的                 已经上传仓库的


Git命令
列出文件与目录:ls
配置:git config --help
$git --init

开始前理解需要理解的概念
  • blessed (remote) repository:远程服务器(仓库),存储最终发布版本
  • local repository:本地版本仓库 objects
  • stage area:缓冲区域,上传索引时 index
  • work area:工作区域
初始化:init和clone


HEAD:最新版本的意思
add&commit  初始化
$ git add *,c
$ git add README
$ git commit -m "initial project version"

添加文件内容
$ echo "内容" >> 文件名

提交文件
$git commit -a -m "消息"

status   查询状态
$ git status

查看
cat <File>

查看历史变化
$ git log
$ git whatchanged
...D   删除
...M  修改
Ignore file  忽略文件
$ echo "bil" > bin.dll
$ ehco "bil.dll" > .gitignore
$ cat .gitignore
bil.dll

diff  比较文件的不同
$ git diff 默认为staged

$ git diff --staged   比较workspace VS staged
$ git diff --cached   staged VS loca repo

软恢复,恢复到上一个索引
$ git reset   

rm mv移动与删除

$ git remote 查询已本版本库相关联的远程版本库
从本地仓库checkout -- bin1.dll

与远程联系
$ git clong [地址](远程下载)
$ git push
fetch(拉扯下来然后建立分支) pull(合并)
$ git fetch origin

$ git branch 查询当前所属分支
*master

给文件打补丁
$ git format-patch origin/master

权限允许的话可以直接push给远程仓库
$ git push origin master

设立分支branch
$ git branch dimon
切换分支
$ git checkout dimon

两个分支的差异化的处理
$ git show-branch
横向比较分支/文件对文件的比较
$ git diff master dimon
分支合并
$ git merge "merge " HEAD dimon
另一种做法
$ git checkout master
$ pull . branch1

合并可能会产生冲突
$ git merge "dfsdfds" HEAD dimon
Auto-merging perl.pl
CONFLICT (content): Merge conflict in perl.pl
Automatic merge failed; fix conflicts and thern commit the result.
解决方法:
打开文件
修改最终定下的方案
然后再提交

标识为一个版本号:tag
$ git tag -a Beta1 -m "make beta1"
如何恢复到以前版本
进行修改后 
标识为另一个版本Beta2
$ git tag -a Beta2 -m "make beta2"

 cd d:\work

常用 Git 命令清单

作者: 阮一峰

日期: 2015年12月 9日

我每天使用 Git ,但是很多命令记不住。

一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。

下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

一、新建代码库

# 在当前目录新建一个Git代码库
$ git init

# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]

# 下载一个项目和它的整个代码历史
$ git clone [url]

二、配置

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

三、增加/删除文件

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

四、代码提交

# 提交暂存区到仓库区
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a

# 提交时显示所有diff信息
$ git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

五、分支

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

# 新建一个分支,并切换到该分支
$ git checkout -b [branch]

# 新建一个分支,指向指定commit
$ git branch [branch] [commit]

# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]

# 切换到指定分支,并更新工作区
$ git checkout [branch-name]

# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

六、标签

# 列出所有tag
$ git tag

# 新建一个tag在当前commit
$ git tag [tag]

# 新建一个tag在指定commit
$ git tag [tag] [commit]

# 查看tag信息
$ git show [tag]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

七、查看信息

# 显示有变更的文件
$ git status

# 显示当前分支的版本历史
$ git log

# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]

# 显示指定文件相关的每一次diff
$ git log -p [file]

# 显示指定文件是什么人在什么时间修改过
$ git blame [file]

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

# 显示某次提交的元数据和内容变化
$ git show [commit]

# 显示某次提交发生变化的文件
$ git show --name-only [commit]

# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]

# 显示当前分支的最近几次提交
$ git reflog

八、远程同步

# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

九、撤销

# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到工作区
$ git checkout [commit] [file]

# 恢复上一个commit的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]

# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]

十、其他

# 生成一个可供发布的压缩包
$ git archive

(完)


版本控制-Git/SVN 【代码】Git版本控制。 阅读详情

相关推荐

电力电子技术(13)——大功率可控整流电路

目录引言2.6.1 带平衡电抗器的双反星形可控整流电路电路结构的特点接平衡电抗器的原因平衡电抗器使得两组三相半波整流电路同时导电的原理分析谐波分析2.6.2 多重化整流电路概述原理目标1)移相多重联结2)多重联结电路的顺序控制3重晶闸管整流桥顺序控制带平衡电抗器的双反星形可控整流电路(是多重化整流电路的重要形式之一)的特点:适用于低电压、大电流的场合。多重化整流电路的特点:绕组的极性相反的目的:消除直流磁通势如图所示,虽然两组相电流的瞬时值不同,但是平均电流相等而绕组的极性相反,所以直流安匝(电流*匝数)互

weixin_45589295的博客 1万+

版本控制工具Git

记录文件的每次更新,可以对版本做个快照,或者是记录补丁文件,适合个人用,如 RCS。

m0_55329111的博客 2515

Unraid小白必看:5分钟搞定OpenWrt软路由安装(附iStoreOS配置技巧)

本文为Unraid新手提供了一份详尽的OpenWrt软路由安装与配置指南。通过虚拟机技术,在Unraid系统上快速部署基于iStoreOS的软路由,详细讲解了旁路由与主路由两种模式的网络配置、性能优化技巧及常见故障排查方法,帮助用户充分利用闲置硬件,打造高性能、可定制的家庭网络中枢。

wine的专栏 485

Git版本控制

Git版本控制

IT谢彪的博客 1399

手把手教你用Zynq-7100 FPGA实现100Mbps OOK信号定时同步(含完整Verilog代码)

本文详细介绍了如何在Zynq-7100 FPGA平台上实现100Mbps OOK信号的定时同步,涵盖插值算法、Gardner定时误差检测等关键技术。通过完整的Verilog代码和优化技巧,解决了50MHz外部时钟条件下的400MHz采样率同步挑战,为无线通信系统设计提供实用解决方案。

weixin_42522374的博客 301

HP iLO4报错自救指南:Embedded Flash/SD-CARD故障的3种修复方案(附详细截图)

本文详细解析了HP iLO4出现'Embedded Flash/SD-CARD'故障时的3种修复方案,包括快速恢复、固件级修复和硬件级解决方案。通过Diagnostics诊断和Self-Test报告,帮助运维人员高效解决问题,并提供预防性维护建议,确保服务器远程管理功能的稳定性。

weixin_42522953的博客 510

git版本控制工具介绍

分布式版本控制中,每个开发者的本地仓库都是一个完整的版本库,包含了项目的所有历史记录和版本信息。所有的版本数据都集中管理,开发者需要与中央服务器进行交互来进行版本控制操作(SVN),便于团队协作,但如果中央服务器出现故障,所有的版本会有丢失风险。通过创建不同的分支,开发人员可以在各自的分支上独立地进行开发、测试等工作,互不干扰。创建好后取SSH地址,创建一个用于接收远程仓库的文件夹,输入克隆命令:git clone 输入你自己的SSH地址,刚开始创建仓库的小伙伴会遇到警告,因为仓库中没有文件,不必理会。

2403_87486006的博客 2076

PDF批量加水印 与 去除水印实践

我们可以给PDF加图片水印或文字水印,要去除图片水印,一般只需要删除最后一个图片对象即可。要去除文字水印,需要保证主体内容和文字水印在/Contents中位于不同的对象内,这样我们只需要删除文字水印对应的对象即可删除水印。而对于主体内容和文字水印已经混合在一个对象时,本文的提供的方法则无能为力,需要进一步深入分析PDF细节。

小小明-代码实体的专栏 2758

Git【版本控制和Git的安装介绍】

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。下图就是分布式版本控制工具管理方式:仓库(版本库):相当于一个专门用来存放代码的目录。这个目录里面的所有文件都可以Git管理,每个文件的增删改查都能被Git跟踪到。

热情、奔放、快乐编程! 1313

Docker Desktop重装避坑:从卸载到安装的完整流程(Win10/Win11适用)

本文详细介绍了在Windows 10/11系统上彻底卸载和重新安装Docker Desktop的完整流程,包括深度清理残留文件、注册表项和虚拟磁盘,以及安装前的环境准备和安装后的验证步骤,帮助用户避免常见问题并优化Docker环境配置。

julia4scientist的博客 1107

Cesium 实现动态加载气象数据:渲染成动态雨雪/云层效果(源码 + 原理)

本文介绍了在Cesium中实现动态天气效果的技术方案。核心思路是通过时间轴驱动多层数据动态切换,包括:1)时间维度处理,按序列加载不同气象图层;2)空间维度处理,将气象数据切分为瓦片;3)效果层实现,制作风场、降水等动态可视化效果。文章详细讲解了后端数据预处理(生成瓦片和风场JSON)、前端实现(双层雷达瓦片交替渐变、风场粒子系统)的具体方法,并提供了完整的代码示例。此外还探讨了雨雪粒子、云层效果等增强功能,以及工程化建议,为构建科学准确的动态天气可视化系统提供了实用解决方案。

专注AI大模型,软件混淆,授权 621

Git到底是什么 _git版本控制管理

一心同学】用一句话概括Git是目前世界上最先进的分布式版本控制系统,没有之一!我们来讲一个例子,在公司里,上司要让小明去写一份报告,小明是一个非常认真工作的员工,于是小明回到家后就开始写报告,写好了一份报告,却发现好像有些地方不太好,但对于原报告又不想删掉,说不定哪一天可以用得着呢,于是,小明就在第一份报告的基础上继续更改,第二个版本的报告完成了,但细心的小明发现不行,还得改,于是,就又写了版本3版本4于是就造成了以下这个局面:🚀【痛苦面具1】:当小明想要找回之前修改的某个报告时,却【找不到了。

2401_87299734的博客 1192

第一节:初识n8n与下一代工作流自动化

本章介绍了n8n的Fair-code理念与节点式架构,对比了其与Zapier/Make的核心差异,并引导读者在n8n Cloud上完成首次界面导览,建立了工作流自动化的宏观认知。

easeyoo的专栏 105

git版本控制

以后提交代码之前,需要先update project,再push避免冲突出现。

m0_51607909的博客 1261

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

git本地版本控制简介

本文介绍了Git本地版本控制的基础知识与应用场景

Lown_1的博客 1229

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Git 版本控制

Git 版本控制

程永强 1754

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

在IDEA中使用Git进行版本控制

在IDEA中使用Git进行版本控制

2201_75490194的博客 2875

前端版本控制git

Git操作 1.版本控制 2.集中化版本控制SVN 优点:代码存放在单一的服务器上,便于项目的管理,分布式的版本控制系统在管理项目时,放到不是项目版本与版本之间的差异,而是索引(所需要的磁盘空间少,所以每个客户端都可以放的下) 缺点: 回滚速度慢 服务器宕机:员工写的代码得不到保障 服务器炸了:项目的历史记录丢失 分布式版本控制GIT 客户端并不是提取最新版本的文件快照,而是把代码仓库完整地镜像下...

NDSoumig的博客 369

GIT 版本控制工具

1.版本控制的起源 现在的软件项目通常是由一个研发小组共同分析、设计、编码、维护以及测试的 针对团队开发需要解决以下问题: 备份多个版本,费空间,费时间 难以恢复至以前正确版本 难以解决代码冲突困难 难以追溯问题代码的修改人与修改时间 无法进行权限控制 项目版本发布困难 源代码管理工具就是为了解决上述问题便运营而生 2.常见的版本控制工具 CVS 开启版本控制之门 SVN 集中式版本控制 GIT 分布式版本控制 集中式: 分布式: 集中式与分布式最大的区别: 集...

lilygg的博客 1510

Git版本控制使用

Git 版本控制 (一) 一、什么是 版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 实现跨区域多人协同开发 追踪和记载一个或者多个文件的历史记录 组织和保护你的源代码和文档 并行开发、提高开发效率 跟踪记录整个软件的开发过程 等等 简单说就是用于管理多人协同开发项目的技术。 1.常用的版本控制 目前影响力最大和适用范围最广的主流的版本控制: Git SVN(Sub

puppet_zz的博客 447

版本控制Git

版本控制Git(全集)1 Git概述1.1 版本控制的方式1.2 Git1.3 Git工作流程二级目录三级目录 1 Git概述 1.1 版本控制的方式   (1) 集中式版本控制工具:集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库。 举例:SVN和CVS   (2) 分布式版本控制工具:分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网

lflcodeplus的博客 1826

版本控制 -- Git总结

Git的安装及常用命令和项目部署等。

qq_45291028的博客 262
下一篇: Activity的生命周期
朴哲
博客等级 码龄11年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值