git合并分支和解决冲突-git基础(十一)

在项目开发中,master 是主分支,如果我们要增加功能,或者修改 BUG ,都应当创建一个新的分支。
在新分支上逐步推进完成工作的同时,新的分支在不断产生版本,直到分支上的开发工作完成后,此时我们就需要将其合并到主分支上,并删除此分支。因为它已经完成了使命。

一、分支的合并

命令 git merge
将指定分支合并入当前所在分支。

假如我们的项目推进到 c2 版本了,此时有个编号为 53 的 Bug 需要我们修改。
此时我们新建一个名为 iss53 的分支,在上面修复完成BUG。如下图所示:
git合并分支和解决冲突-git基础(十一)
当完成BUG修复后,我们需要将其合并入master分支。
执行命令:

$ git checkout master
$ git merge iss53

首先切换到 master 分支,再执行合并命令。
如图所示:
git合并分支和解决冲突-git基础(十一)
此时 master 和 iss53 分支指向了同一个版本。完成了合并后,iss53 的使命就完成了,删除他。

$ git branch -d iss53
Deleted branch iss53 (was b2bf15c).

git合并分支和解决冲突-git基础(十一)
至此,一个分支的创建合并就完成了。

二、解决冲突

冲突是怎么发生的?当两个分支对同一个文件的同一部分进行了修改。此时要合并成一个文件,以哪个的修改为准呢?此时就产生了冲突。
冲突需要人工解决。
比如
1. master 分支上,我们将 hello.txt 的内容由 hello 改为 hello world。
2. testing 分支上,我们将 hello.txt 的内容由 hello 改为 你好,世界。
此时 master 分支 和 testing 分支 对 hello.txt 文件的第一行内容同时进行了修改,此时合并分支就产生了冲突。

执行合并命令:

$ git merge testing
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

此时提示,hello.txt 合并冲突。
查看 hello.txt 的内容:

<<<<<<< HEAD
hello world
=======
你好世界
>>>>>>> testing

上面内容是什么意思呢?
<<<<<<< HEAD
=======
>>>>>>> testing
这三个符号是分割符号。
<<<<<<< HEAD 至 ======= 是当前分支的内容。
======= 至 >>>>>>> testing 是被合并分支的内容。
HEAD 表示当前分支,testing 是被合并分支的名称。
现在就一目了然了吧。 两个分支,对同一文件的同一部分进行了修改,冲突内容也显示了,此时我们处理冲突。

冲突的处理:首先要删除三个分割符号,其次根据实际情况改好内容后,进行 git add 操作,再提交。就完成了冲突的处理。

这里我们保留 “hello world” ,删除 “你好世界”
hello.txt内容变化为:
git合并分支和解决冲突-git基础(十一)

$ git add hello.txt

$ git commit -m 解决冲突
[master 30e69f7] 解决冲突

至此冲突的合并就完成了。

 

如若转载,请注明出处:https://www.javaidea.cn/article/8058.html

(0)
上一篇 2022年2月7日 上午10:03
下一篇 2022年2月7日 上午10:03

相关推荐

发表评论

您的电子邮箱地址不会被公开。