玩转GIT之终结git-flow中分支冲突系列问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/AndyNikolas/article/details/79906202