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自动把本地的
如果要在远程仓库的其他分支(如 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
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为分支名
如果推送出现冲突,先将远程分支最新的提交抓取下来,在本地解决冲突之后再推送。解决冲突的方法与本地冲突完全相同。
参考:
相关文章推荐
- Git 分支管理和冲突解决
- GIT 分支管理:创建与合并分支、解决合并冲突
- git分支管理与冲突解决(转载)
- Git 分支管理和冲突解决
- GIT 分支管理:创建与合并分支、解决合并冲突
- Git 分支管理和冲突解决
- Git 分支管理和冲突解决
- GIT----入门资料,分支管理,冲突解决
- Git解决分支冲突及分支管理策略
- Git 分支管理和冲突解决
- 四、git学习之——分支管理、解决冲突
- Git 分支管理和冲突解决
- Git 分支管理和冲突解决
- git分支管理之解决冲突
- Git学习系列(六)解决分支冲突及分支管理策略
- Git 分支管理和冲突解决
- Git相关知识(分支管理、主要命令和冲突解决)
- Git 分支管理和冲突解决
- Git 分支管理-解决合并冲突
- Git 分支管理和冲突解决