前言
前面我们介绍了分支的相关操作,包括创建、切换、查看、合并、删除等操作;
但是合并分支时,可能会出现合并冲突,比如多个分支改了同一个文件;
本篇就介绍下怎么解决分支的合并冲突。
目录
- 创建Git项目
- 在master主分支更新文件
- 在dev分支更新同一个文件
- 尝试将dev分支合并到master主分支
- 在master主分支修改冲突的文件
正文
1. 创建Git项目
创建并进入目录 branch-demo;
对目录进行git初始化: git init
初始化
PS D:\branch-demo> git init
Initialized empty Git repository in D:/branch-demo/.git/
添加远程仓库地址:git remote add origin git@github.com:YourUserName/git-branch-demo.git
创建一个demo.txt文件,编辑内容然后提交:
PS D:\branch-demo> git add .\demo.txt
PS D:\branch-demo> git commit -m "hello"
[master (root-commit) b2ce186] hello
1 file changed, 1 insertion(+)
create mode 100644 demo.txt
PS D:\branch-demo> git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 209 bytes | 69.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:Jalon2015/git-branch-demo.git
* [new branch] master -> master
创建分支dev: git branch dev
现在的示意图如下所示:
2. 在master主分支更新文件
现在我们有了一个git项目,有两个分支master、dev,有一个文件demo.txt;
现在我们开始制造冲突;
先在master主分支更新文件demo.txt,更新后的内容如下所示:
1 hello
然后我们提交变更: git add -A; git commit -m "update demo.txt"
PS D:\branch-demo> git add -A
PS D:\branch-demo> git commit -m "update demo.txt"
[master 9d891b6] update demo.txt
7 files changed, 81 insertions(+)
示意图如下所示:可以看到,master前进了一步,但是dev还在原地
3. 在dev分支更新同一个文件
下面我们切换到dev分支:git switch dev
,切换后 Head 就会指向 dev 分支
PS D:\branch-demo> git switch dev
Switched to branch 'dev'
再次修改demo.txt,修改后的内容如下:
2 hello
提交到dev分支:git add -A; git commit -m " update demo.txt again"
PS D:\branch-demo> git add -A
PS D:\branch-demo> git commit -m "update demo.txt again"
[dev 56659d5] update demo.txt again
2 files changed, 71 insertions(+), 1 deletion(-)
create mode 100644 .idea/workspace.xml
示意图如下所示:可以看到,master和dev分别指向不同的节点,那么此时合并就会有冲突,下面我们就试着合并
4. 尝试将dev分支合并到主分支
一般的习惯都是将dev合并到master,所以这里我们先切换到master分支:git switch master
然后执行合并命令:git merge dev
PS D:\branch-demo> git merge dev
Auto-merging demo.txt
CONFLICT (content): Merge conflict in demo.txt
Automatic merge failed; fix conflicts and then commit the result.
不出所料,合并冲突了;
解决办法就是修改冲突的文件,这里我们在编辑器中能看到如下所示的界面:demo.txt
<<<<<<< HEAD
1 hello
=======
2 hello
>>>>>>> dev
上面的<<<<<<< HEAD
就是当前master分支修改的内容;
上面的>>>>>>> dev
就是dev分支修改的内容;
上面的=======
用来将分支区分开。
5. 在主分支修改冲突的文件
现在我们在主分支,如果修改内容的话,也只会影响到主分支,dev分支不受影响;
我们来修改demo.txt的内容:
new hello
然后提交: git add -A; git commit -m "solve conflict"
PS D:\branch-demo> git add -A
PS D:\branch-demo> git commit -m "solve conflicts"
[master 491b8df] solve conflicts
提交之后,我们再次合并:git merge dev
PS D:\branch-demo> git merge dev
Already up to date.
可以看到,这次合并成功了
示意图如下所示:master将dev合并之后,dev还是在原地,这个时候dev分支已经没用了,我们直接删除git branch -d dev
总结
如果合并分支时出现了冲突,解决办法就是查看冲突文件,根据提示进行修改;
修改后再次提交,合并即可
评论区