跟廖雪峰学习git(6.0)

本文主要介绍了Git分支合并时冲突的解决办法。当分支各自有新提交,Git无法执行“快速合并”,会出现冲突。此时需手动解决冲突,将合并失败的文件编辑为期望内容后再提交,还可用命令查看分支合并图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决冲突

合并分支往往也不是一帆风顺的。

准备新的feature1分支,继续我们的新分支开发:

git checkout -b feature1

输出如下:

Switched to a new branch 'feature1'
D       readme.txt

修改readme.txt最后一行,改为:

Creating a new branch is quick AND simple.

feature1分支上提交:

git add readme.txt
git commit -m "AND simple"

输出如下:

[feature1 ab01e68] AND simple
 1 file changed, 1 insertion(+), 1 deletion(-)

切换到master分支:

git checkout master

输出如下:

Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。

master分支上把readme.txt文件的最后一行改为:

Creating a new branch is quick & simple.

提交:

git add readme.txt
git commit -m "& simple"

输出如下:

[master 5f74c5d] & simple
 1 file changed, 1 insertion(+), 1 deletion(-)

master分支和feature1分支各自都分别有新的提交,变成了这样:

这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:

git merge feature1

输出如下:

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

冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:

输入:

git status

输出如下:

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)

        both modified:   readme.txt

查看readme.txt的内容,输入如下:

cat readme.txt

输出如下:

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,修改如下后保存:

Creating a new branch is quick and simple.

提交:

git add readme.txt
git commit -m "conflict fixed"

输出如下:

[master 1d26147] conflict fixed

现在,master分支和feature1分支变成了下图所示:

用带参数的git log也可以看到分支的合并情况:

git log --graph --pretty=oneline --abbrev-commit

输出如下:

*   1d26147 (HEAD -> master) conflict fixed
|\
| * ab01e68 (feature1) AND simple
* | 5f74c5d & simple
|/
* d03e35c branch test
* ee37c08 (origin/master) wrote a readme.txt

最后,删除feature1分支:

git branch -d feature1

输出如下:

Deleted branch feature1 (was ab01e68).

工作完成。

小结

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

git log --graph命令可以看到分支合并图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值