经常使用操作
操作 | 说明 |
Fetch | 从远程获取最新版本号到本地,不会自己主动merge |
Merge | 能够把一个分支标签或某个commit的改动合并如今的分支上 |
Pull | 从远程获取最新版本号并merge到本地相当于fetch+merge |
Push | 将本地分支的更新。推送到远程主机 |
Merge tool | 当你的代码产生了冲突能够通过此工具高速的对照 |
Switch to | 将当前分支切换到其他分支或标签 |
Commit | 将更改提交到本地库中 |
Rebase |
|
Reset | 将当前分支切换到本分支曾经的不论什么一个版本号状态,即所谓的“回溯” EGit的恢复版本号功能与使用Git Reset命令一样,而恢复的方式又分为Soft、Mixed、Hard三种: •Soft:恢复到前面版本号,保留文件变更内容。且将已变更的全部文件加到准备区(Staging Area)。 •Mixed:恢复到前面版本号,保留全部已变更文件的变更内容。 •Hard:恢复到前面版本号。不保留全部已变更文件的变更内容。 |
Untrack | 将已经加入到版本号控制的文件取消监视,及不再对其进行版本号控制 |
Ignore | 忽略指定的文件或目录,此功能用在还没有进行版本号控制的文件上 |
Compare with | 此功能同意你将当前文件和指定时期的文件进行对照 |
经常使用操作对照
Branch和Tag的差别:
tag多用于建立里程碑。比方开发达到某中程度,公布某个版本号,如V1.0。能够使用tag标注。
这样。以后对于程序版本号号就能够找到相应的代码状态。并进行build等操作。
理论上,tag作为里程碑的镜像存储。应该是仅仅读的才对。
相比,branch是project须要并行开发不同版本号而创建的。如一个原型项目完毕后。可能有不同的客户购买并定制,于是就须要在这个原型上构建两个独立的开发库,各自并行开发不同客户的须要。这样,branch能够是进程中的project,并且之后会不断改动的。
由此,能够看出tag和branch的区别。tag更重要的是记录某个里程碑,仅仅是希望得到那个状态时的代码状态,这对bug的确认和查找非常实用处。而各个branch之间是能够肆意各自的修改,互不相干的。branch上也能够有自己的tag。
Merge和Rebase的差别:
如果原先有A,B,C三个提交记录
开发人员提交了D,开发人员 Ed提交了E
以下使用MERGE和REBASE两种方式分别对代码进行合并
MERGE方式:
这时D和E的提交仍然在这,可是我们创建了一个新的提交记录M。此时的状态图成了一个菱形,这让非常多人看起来非常混乱。
REBASE方式:
从上图能够看出这样的方式创建了提交R,这时的内容和M实际上是同样的。
可是这时没有了E。所以整个提交记录是看起来是一条线。
推荐阅读: