git分支原理命令图文解析

git分支原理命令图文解析

ID:14649856

大小:148.63 KB

页数:7页

时间:2018-07-29

git分支原理命令图文解析_第1页
git分支原理命令图文解析_第2页
git分支原理命令图文解析_第3页
git分支原理命令图文解析_第4页
git分支原理命令图文解析_第5页
资源描述:

《git分支原理命令图文解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本地分支解析git通过可变指针来实现对提交数据的历史版本的控制,每当我们提交新的更新,当前分支(设为master)则指向最后一个提交更新A,而最后一个提交对象则存在一个指针指向前一次的提交更新Q。如果我们创建一个新的分支,child,它和master共同指向A,这时,如果我们向child分支提交更新B,我们会发现child指向B,而master依然指向A。无论我们在child分支进行了任何开发,只要回到master分支,就能恢复到更新A的数据状态了。 在图片里,我们还注意到有一个head指针,一般来说,它会指向我们目前所在的工作分支。现在它指向了我们的master分支,意思是

2、master是我们目前的工作分支。一旦提交更新,就会在master分支上提交。现在,让我们看看与git分支有关的操作命令: 1.gitbranch[option][name] 如果不使用任何参数,它可以用来查看所有的分支,而在分支名前有*标记的则为主分支,如果加上name为创建新分支,,如gitbranchchild,则会创建一个名为child的分支,此外,它有一些常用的参数:参数解释-v用于查看各个分支的最后一次commit信息-d删除分支。-r查看远程主机分支-a查看所有分支。–merge查看哪些分支已被当前分支合并–no-merge查看尚未合并的工作,如果其中的分支还包

3、含尚未合并的工作,而我们尝试使用gitbranch-d 删除时,我们会被提示:error:Thebranch'xxxxx'isnotanancestorofyourcurrentHEAD.,如果想要强制删除的话,可以使用gitbranch-Dxxxxx,即使用大写的D来实现。2.gitcheckout[name] 切换到对应的分支,对于上图,如果我们是使用gitcheckoutchild,我们的head指针就会指向child分支了。这时候,如果我们提交新的更新D,我们会发现: 我们的D指向C,而C依然指向A,也就是说,以后我们在child分支上做的任何更新,都不会对maste

4、r分支所在的之路造成任何影响!一旦使用了checkout命令,我们还会发现,不仅head指针会指向新的分支,而且当前工作目录中的文件也会换成了新分支对应的文件了。 此外,我们还可以使用gitcheckout-b[name]命令,它会新建一个分支,并自动将当前的工作目录切换到该分支上。 3.gitmerge[name] 合并分支,有的时候,我们创建次要分支,可能是为了修改原有程序的bug,或为了拓展新的功能,这时候如果我们想把次要分支的修改何并进主分支中,我们可以使用gitmerge 命令来实现。 1.“Fastforward”(快进)式合并: 如果像上图所示,我们要把chil

5、d分支合并进master中,因为child分支所指向的更新在master分支的直接上游,git会使用“Fastforward”(快进)式合并,直接将master分支指针指向child分支所指向更新,如下图所示: 这时候,如果我们觉得child分支没什么用了,我们可以使用gitbranch-dchild来删除分支。2.基本合并如果我们这次要合并的分支不在我们目前分支的上游,如下图所示:这时,如果使用快进式合并(将master分支指向更新E),这样就会丢失更新D了,于是,我们采用另一种合并方式,它的合并结果如下图所示: 我们会发现,此时master分支所指向的合并更新F出现了两个

6、祖先。 3.冲突合并 基本合并的冲突源于两个分支间的所指向的版本更新不能根据箭头方向从一方抵达另一方,即两个分支在更新C单向分岔了,但我们还发现,更新C、A、Q还是master和child分支的共同父更新,如果两个分支都对C或A或Q版本的相同文本相同位置做了不同的修改,git就无法智能地将两者合并一起,因为它不能判断master的修改和child的修改哪个是更佳的,事实上,这个只能由人来解决。比如两个分支共同修改了版本C中的README文件的第1行:1master:I’mmaster! 2child:I’mchild!当我们尝试从master上合并child时,会出现:$ g

7、itmergechild 自动合并README 冲突(内容):合并冲突于README 自动合并失败,修正冲突然后提交修正的结果。 或英文版的: Auto-mergingREADME CONFLICT(content):MergeconflictinREADME Automaticmergefailed;fixconflictsandthencommittheresult. 这时调用gitstatus命令,会看到: $gitstatus 位于分支master 您有尚未合并的路径。 (解决冲突并运行“git

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。