Git merge 策略忽略删除的文件

标签 git merge

我有一个特殊的分支(release 分支),它是 master 分支的精确副本,删除了一些文件和目录。此分支上没有任何开发,但它必须与 master 同步,因此必须不断将 master 上的更新推送到该分支。

通过正常 merge (git merge master),我经常遇到冲突,例如(示例 README 文件):

CONFLICT(删除/修改):README 在 HEAD 中删除,在 master 中修改

这是预期的:我尝试 merge 我已删除的文件中的更改。因此,为了解决这些问题,我只使用 git rm README

要使其自动化,我可以通过指定 -X ours 来使用自动冲突解决。手册页表明这对我来说是正确的:

此选项通过支持我们的版本强制自动解决冲突的 hunk。来自另一棵树的与我们这边不冲突的变化被反射(reflect)到 merge 结果。

但是,当我执行 git merge -s recursive -X ours master 时,我仍然遇到相同的 Unresolved 删除/修改冲突。我究竟做错了什么?有没有其他方法可以自动解决冲突?

最佳答案

可能有更好的方法来做到这一点,但我通过执行 merge (使用默认 merge 策略)然后运行解决了类似的问题

git status | grep 'deleted by us' | awk '{print $4}' | xargs git rm

在此之后,您应该正常解决其他冲突,然后提交。

这只是删除了当前分支上已删除的所有文件,我认为这就是您想要的。

关于Git merge 策略忽略删除的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331494/

相关文章:

git - 如何使 git merge 的默认设置为 --no-ff --no-commit?

merge - Snowflake 是否可以自动合并?

algorithm - 合并k个排序链表——分析

Visual Studio 上的 GIT 远程扩展 - 显示大量未知更改

git - hexo:错误未找到部署程序:github

git - 我怎样才能找出是谁 push 了git?

c# - 确定合并 K 排序数组的时间复杂度

git - (Git Merging) 何时使用 'ours' 策略、 'ours' 选项和 'theirs' 选项?

git - 在哪里可以找到 Git 本地化的语言列表?

git - Jenkins - Git Publisher - 无法推送标签