版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AndyNikolas/article/details/79906202
第一种处理方法
开发要求:
不能丢弃本地修改,因为其中的某些内容的确是我们需要的,此时需要对unmerged
的文件进行手动修改,删掉其中冲突的部分。
情景再现:
比如你在A分支上commit
了,然后PR
了,这时你的PR
没有冲突的提示,可以合并。但是之后有人在你PR
的目标上的相同位置做了修改,这个时候,你的PR
就有冲突的提示了,不可以合并,怎么办?
解决方法:
需要先获取远程最新的origin/master
分支的上的commitID
,然后存在本地mstaer
分支上的一个文件内,然后再用git merge origin/master
合并到本地的文件上。然后会出现冲突,再在冲突的文件内根据需求将一些内容删除掉,然后执行git add && git commit && git push origin
就不会再冲突了。
具体代码如下:
// 切换到`branchA`分支
git checkout branchA
// 获取最新commitID
git fetch origin
// 合并到本地文件上
git merge origin/master
// 对冲突内容进行修改后,执行
git add .
git commint -m 'finished'
git push origin master branchA
下面是官方的一个例子,我写了注释
// 官方例子
// 第一步
git remote add upstream https://github.com/schacon/blink
// 第二步
git fetch upstream
// 输出信息
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
Unpacking objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
From https://github.com/schacon/blink
* [new branch] master -> upstream/master
// 第三步
git merge upstream/master
// 输出信息
Auto-merging blink.ino
CONFLICT (content): Merge conflict in blink.ino
Automatic merge failed; fix conflicts and then commit the result.
// 第四步
vim blink.ino
// 第五步
git add blink.ino
// 第六步
git commit
// 输出信息
[slow-blink 3c8d735] Merge remote-tracking branch 'upstream/master' \
into slower-blink
// 第七步
git push origin slow-blink
// 输出信息
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 682 bytes | 0 bytes/s, done.
Total 6 (delta 2), reused 0 (delta 0)
To https://github.com/tonychacon/blink
ef4725c..3c8d735 slower-blink -> slow-blink
第二种解决方法
如果我们确定远程的分支正好是我们需要的,而本地的分支上的修改比较陈旧或者不正确,那么可以直接丢弃本地分支内容,运行如下命令(看需要决定是否需要运行git fetch
取得远程分支):
$:git reset --hard origin/master