/

Git checkout --theirs --ours 解决冲突文件

在代码合并时遇到 conflict 是常有的事情,有些内容是自动生成的资源文件,手工处理起来很麻烦,某一文件如何全部以某一分支的内容为准?

使用 checkout --theirs . checkout --ours .

场景实例

Engineer A、B 同时从 master checkout 自己的功能分支:

# Engineer A
git checkout -b feature-a

# Engineer B
git checkout -b feature-b

Engineer A 开发比较快先进行了 push:

git add .
git commit -m "feat: feature-a"
git checkout master
git merge feature-a
git push

Engineer B 再 push 前需要拉最新的 master,因为改到了同一行代码,出现代码冲突。

merge 合并代码

使用 merge 命令导致的代码冲突。

git checkout master
git pull
git merge feature-a

在处理冲突的过程中:

# 以自己(Engineer B)的代码为准
git checkout --ours .
git checkout --ours file.txt

# 以他人(Engineer A)的代码为准
git checkout --theirs .

rebase 合并代码

使用 rebase 命令导致的代码冲突。

git checkout master
git merge feature-a
git pull --rebase

在处理冲突的过程中:

# 以自己(Engineer B)的代码为准;与 merge 相反,可以理解为 rebase 时主干是他人的分支
git checkout --theirs .

# 以他人(Engineer A)的代码为准;与 merge 相反,可以理解为 rebase 时主干是他人的分支
git checkout --ours .

References