多语言展示
当前在线:1044今日阅读:26今日分享:39

GIT分支篇,合并分支与解决分支冲突

那么多的版本控制系统,为什么偏偏选择GIT?基本上可以说就是因为他的分支模型的轻量与便捷性,因为在其他的版本控制系统,分支是一个略显低效的功能,它意味着你需要创建一个项目的副本,对于大项目来说会耗费很多时间,而GIT可以让你频繁的使用分支与合并,哪怕一天中进行多次分支与合并操作,都非常轻松。本文给大家如何合并分支内容。
工具/原料
1

电脑

2

GIT

历史回顾

首先我们回顾一下上一篇文章讲到了哪里,上文讲到的工作流程如图所示

没有冲突的合并操作,我们合并b1,b2的内容到master
1

# 首先我们看看当前分支master下的文件ll# 合并分支b1 -m选项如果不加的话,此时会弹出一个文本框需要你填写一个合并的信息git merge b1 -m '合并b1'# 合并分支b2git merge b2 -m '合并b2'

2

# 合并完成后 再次查看一下master下的文件,可见b1分支的工作内容,b2分支的工作内容,都已经合并到master中ll

3

#查看当前已合并的和未合并过的分支,可见其他分支中没有合并的内容git branch --mergedgit branch --no-merged

4

此时整个项目的工作流程,如图所示

我们在多人协同开发的使用GIT的时候,经常会遇到冲突的情况,现在在本项目模拟一下当前情况
1

# master分支中查看test.txt的内容cat test.txt# 添加一行内容'master上的修改'进入text.txt末端并查看echo 'master上的修改' >> test.txtcat test.txt# 跟踪修改并提交到仓库的master分支git add . && git commit -m 'master上的第四次提交'

2

# 切换到b1分支并查看b1分支中的test.txt内容git checkout b1cat test.txt# 添加一行内容'b1上的修改'进入text.txt末端并查看echo 'b1上的修改' >> test.txtcat test.txt# 跟踪修改并提交到仓库的master分支git add . && git commit -m 'b1上的第四次提交'此时大家应该都可以看出,两个分支中相同文件,相同位置做了不同的修改,那么合并的时候怎么处理呢?下文给大家讲解。

解决合并的冲突并提交
1

# 切换到主分支mastergit checkout master# 合并分支b1,可以发现冲突了git merge b1# 查看当前仓库状态,可以看到当前test.txt因包含冲突内容而处于未合并(Unmerged)状态git status

2

# 打开文件看看冲突内容,可以发现冲突的部分已经用<<<<<<< , ======= , 和 >>>>>>>这些行标记起来,具体区分如图

3

# 解决的冲突的方案,就是确定冲突部分的代码或者文案保留什么样的内容,然后清掉<<<<<<< , ======= , 和 >>>>>>>这些行标记,修改好的文件内容如图

4

# 重新提交一次到仓库git add . && git commit -m 'master上处理好冲突并提交第五次'

5

# 冲突的时候git会生成以下几个文件协助你解决冲突_BACKUP_:冲突文件备份_BASE_:冲突前文件内容_LOCAL_:本地文件修改内容,本文因为是master合并b1,所以是master分支的修改内容_REMOTE:远程文件修改内容,本文因为是master合并b1,所以是b1分支的修改内容修改完毕建议删除他们如图

6

此时整个项目的工作流程图,如图所示:

注意事项

发生冲突GIT会生成几个文件,解决冲突后可以删除它们

推荐信息