【Git企业开发】第三节.Git的合并冲突

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:Git企业级开发

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!!

文章目录

  • 前言
  • 一、Git的合并冲突
  • 总结


前言

一、Git的合并冲突

在实际分⽀合并的时候,并不是想合并就能合并成功的,有时候可能会遇到代码冲突的问题。

问题举例演示:
为了演示这问题,创建一个新的分支 dev1 ,并切换至目标分支,我们可以使用 git checkout - b dev1 一步完成创建并切换的动作,
代码示例:
hyb@139-159-150-152:~/gitcode$ git checkout -b dev1
Switched to a new branch 'dev1'
hyb@139-159-150-152:~/gitcode$ git branch
* dev1
master

在 dev1 分支下修改 ReadMe 文件,更改文件内容如下,并进行一次提交,如:
代码示例:
hyb@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write bbb for new branch                        # 将 aaa 该为 bbb
hyb@139-159-150-152:~/gitcode$ git add .
hyb@139-159-150-152:~/gitcode$ git commit -m"modify ReadMe"
[dev1 0854245] modify ReadMe
1 file changed, 1 insertion(+), 1 deletion(-)

切换至 master 分支,观察 ReadMe 文件内容:
代码示例:
hyb@139-159-150-152:~/gitcode$ git checkout master
Switched to branch 'master'
hyb@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write aaa for new branch
我们发现,切回来之后,文件内容由变成了老的版本,这种现象很正常,我们现在也完全能理解。

此时在 master 分支上,我们对 ReadMe 文件再进行一次修改,并进行提交,如下:
代码示例:
hyb@139-159-150-152:~/gitcode$ git branch
dev1
* master
hyb@139-159-150-152:~/gitcode$ vim ReadMe
hyb@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write ccc for new branch                   # 将 aaa 该为 ccc
hyb@139-159-150-152:~/gitcode$ git add .
hyb@139-159-150-152:~/gitcode$ git commit -m"modify ReadMe"
[master c10f6d0] modify ReadMe
1 file changed, 1 insertion(+), 1 deletion(-)

现在, master 分支和 dev1 分支各自都分别有新的提交,变成了这样:
图示示例:
【Git企业开发】第三节.Git的合并冲突_第1张图片

这种情况下,Git 只能试图把各⾃的修改合并起来,但这种合并就可能会有冲突,如下所⽰:
代码示例:
hyb@139-159-150-152:~/gitcode$ git merge dev1
Auto-merging ReadMe
CONFLICT (content): Merge conflict in ReadMe
Automatic merge failed; fix conflicts and then commit the result.
hyb@139-159-150-152:~/gitcode$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add ..." to mark resolution)
both modified: ReadMe
no changes added to commit (use "git add" and/or "git commit -a")

发现 ReadMe ⽂件有冲突后,可以直接查看⽂件内容,要说的是 Git 会⽤ <<<<<<<,=======,>>>>>>> 来标记出不同分⽀的冲突内容,如下所⽰:
代码示例:
hyb@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
<<<<<<< HEAD
write ccc for new branch
=======
write bbb for new branch
>>>>>>> dev1

此时我们必须要⼿动调整冲突代码,并需要再次提交修正后的结果!!(再次提交很重要,切勿忘记)
代码示例:
hyb@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write bbb for new branch
hyb@139-159-150-152:~/gitcode$ git add .
hyb@139-159-150-152:~/gitcode$ git commit -m"merge ReadMe"
[master 2976afc] merge ReadMe

到这⾥冲突就解决完成,此时的状态变成了
图示示例:
【Git企业开发】第三节.Git的合并冲突_第2张图片

⽤带参数的 git log也可以看到分⽀的合并情况,具体⼤家可以⾃⾏搜索 git log 的⽤法:
代码示例:
hyb@139-159-150-152:~/gitcode$ git log --graph --pretty=oneline --abbrev-commit
* 2976afc (HEAD -> master) merge ReadMe
|\
| * c594fd1 (dev1) modify ReadMe
* | c10f6d0 modify ReadMe
|/

最后,不要忘记 dev1 分⽀使⽤完毕后就可以删除了:
代码示例:
hyb@139-159-150-152:~/gitcode$ git branch
* master
hyb@139-159-150-152:~/gitcode$ git branch -d dev1
Deleted branch dev1 (was c594fd1).

总结

【Git企业开发】第三节.Git的合并冲突_第3张图片

你可能感兴趣的:(Git企业开发,git)