GIT - 强制分支的手动合并,否则将合并干净

时间:2016-01-10 01:24:15

标签: git

我有以下情况

git branch
* master

git branch upgrade-project
git checkout upgrade-project

# At this point I run an update script from a third party that replaces 
# many files I have already modified.
git checkout master

# I want all conflicts to be marked regardless of weather GIT can merge them automatically.
git merge upgrade-project    

问题在于它将干净地合并由升级项目分支中的更新脚本替换的所有文件,因为它超前于master,这在正常情况下非常有意义。

我想要的是,当我将upgrade-project合并到master时,所有冲突的文件都会被标记为这样。

这是我可以手动比较并根据需要进行修改。

这可能吗?

2 个答案:

答案 0 :(得分:1)

合并您的分支,但不提交更改:

git merge --no-commit upgrade-project

清理索引,将更改保留在工作目录中:

git reset

解决标有<<<<<的任何冲突(如果有)。

Interactivelly将您需要的“好”更改添加到索引并提交它们:

git add -p
git commit

从不必要的更改中清理您的工作目录:

git reset --hard

答案 1 :(得分:0)

  

upgrade-project分支位于master之前   将upgrade-project合并回master将合并得很干净(没有冲突)   我想对所有不完全相同的文件强制冲突

您可以在执行pull之前获取将要拔出的文件列表:

git checkout master
git diff --name-only upgrade-project

或:

git log --stat master ^upgrade-project

git format-patch master...upgrade-project 

最后一个代码示例将创建您拥有的每个提交的补丁(将要合并的分支之间的差异)。