您的位置:首页 > 其它

Git 分支管理与冲突解决

2017-07-16 23:34 246 查看
目录:

Git分支管理:本地分支、远程仓库分支
合并模式
冲突解决:本地冲突、推送冲突

Git分支提供了并行工作的功能。假设你准备同时学习Git和SVN,你可以用两个分支分别来学习,完成之后进行合并,你就掌握了两种工具的使用了。Git和GitHub的基本操作可以参考我的这篇博客Git
和GitHub使用。

1.分支管理

查看分支         gitbrance

创建分支         gitbranchdev     #dev是分支名


切换分支     gitcheckoutdev

创建+切换        gitcheckout-bdev



合并分支       gitmergedev        #分支dev合并到master

删除分支       gitbranch-ddev   #已合并的分支




强行删除分支        gitbranch-D dev   #分支未合并 

 查看分支图          gitlog--graph




远程仓库的分支

当你从远程仓库克隆时,实际上Git自动把本地的
master
分支和远程的
master
分支对应起来了,并且,远程仓库的默认名称是
origin




如果要在远程仓库的其他分支(如 dev 分支)上开发,就必须创建远程
origin/dev
分支到本地:

gitcheckout-bdevorigin/dev       #创建远程仓库的分支到本地,必须先克隆或关联一个远程分支

本地分支和远程分支的名字最好一致。



推送成功之后,GitHub上的MyRepos仓库dev分支上增加了一个文件。





2.分支合并模式

Fastforward模式

默认模式,在这种模式下,删除分支后,会丢掉分支信息,看不到合并记录.。并不是任何情况都能用这种模式。

普通模式

加上--no-ff参数就是普通模式。在普通模式下,Git会在merge时生成一个新的commit,这样从分支历史上就可以看出分支信息。

普通模式



快进模式



分支图



在分支图中,红线是子分支dev,绿线是主分支master.子主分支分别提交了一次修改,在将dev合并到master时发生冲突,修改冲突文件内容之后再提交。

3.解决冲突

如果两个分支都分别有了新的提交,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突。必须手动解决冲突后再提交。gitstatus也可以告诉我们冲突的文件。

内容冲突

两个分支对同一文件的内容进行了修改并分别提交,如果合并失败,就必须手动解决冲突,修改文件的内容之后再进行提交。



在冲突内容中,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容.文件的内容可以协商修改。

树冲突

一个分支修改了内容,另个一分支删除了文件,在试图合并时就会出现树冲突。假设子分支(如dev)是要合并到主分支master的,处理的方法有:

放弃dev的修改:强制删除dev分支,然后提交即可。
放弃master的修改----分下面两种情况:

master修改了内容,dev删除了文件:在master分支中删除该文件,然后提交;
master删除了文件,dev修改了内容:在master分支中添加被修改的文件,然后提交。

master修改了内容,dev删除了文件:



master删除了文件,dev修改了内容:



对于文件的移动(在Git仓库目录范围内)和重命名,Git都可以自动合并。

远程仓库推送冲突

    从远程分支抓取最新的提交         gitpull 


建立本地分支与远程分支的连接       gitbranch--set-upstreamdevorigin/dev    #dev为分支名





如果推送出现冲突,先将远程分支最新的提交抓取下来,在本地解决冲突之后再推送。解决冲突的方法与本地冲突完全相同。

参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013760174128707b935b0be6fc4fc6ace66c4f15618f8d000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息