我有一个特殊的分支(发布分支),它是master分支的精确副本,删除了一些文件和目录.此分支上没有发生任何开发,但它必须与master同步,因此master上的更新必须不断推送到该分支.
通过正常的merge(git merge master)我不断得到像(例如一个示例README文件)的冲突:
CONFLICT (delete/modify): README deleted in HEAD and modified in master
这是预期的:我尝试合并文件中的更改,我已删除.所以,要解决它们,我会使用它git rm README.
为了使其自动化,我可以通过指定-X our来使用自动冲突解决方案.手册页建议对我来说是对的:
This option forces conflicting hunks to be auto-resolved cleanly by favoring our version. Changes from the other tree that do not conflict with our side are reflected to the
merge result.
但是,当我这样做时git merge -s recursive -X ours master,仍然会得到相同的未解决的删除/修改冲突.我究竟做错了什么?还有另一种自动解决冲突的方法吗?
Bry*_*ead 16
可能有更好的方法来做到这一点,但我通过合并(使用默认合并策略)然后运行来解决类似的问题
git status | grep 'deleted by us' | awk '{print $4}' | xargs git rm
Run Code Online (Sandbox Code Playgroud)
在此之后,您应该正常解决其他冲突,然后提交.
这只删除了当前分支上已删除的所有文件,我认为这就是你想要的.
git merge master
git status --porcelain | awk '{if ($1=="DU") print $2}' | xargs git rm
git commit
Run Code Online (Sandbox Code Playgroud)