我有以下情况
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
时,所有冲突的文件都会被标记为这样。
这是我可以手动比较并根据需要进行修改。
这可能吗?
答案 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
最后一个代码示例将创建您拥有的每个提交的补丁(将要合并的分支之间的差异)。