首页 > 解决方案 > 如何避免在 git merge 中添加已删除的文件?

问题描述

假设有 2 个 git 分支:masterdev. 在dev我删除foo.txt. 之后在master一些更改中添加到foo.txt. 当我合并master到时dev foo.txt,虽然它已从dev.

那么有没有办法不重新创建已删除的文件git merge

编辑:马特指出这会导致冲突,只需再次添加已删除的文件。所以问题是如何从合并中排除在目标分支中没有对应的文件。

标签: gitmerge

解决方案


如果我正确理解了您的问题,这里的 git log 应该是这样的:

* ff3f8a1 (HEAD -> master) changed text
| * 8a4d7d7 (dev) removed file
|/  
* 615d151 initial commit

如果你git merge dev将分支合并devmaster,你最终会遇到合并冲突。这就是文件回来的原因。您必须通过以下任一方式手动解决该冲突:

  • 删除文件 ( git rm --force <file>)
  • 获取它的远程版本(在已删除的一侧)(git checkout --theirs <file>

git merge --strategy-option=theirs将无法处理此类冲突(修改/删除)

AFAIK 没有正确的方法来解决没有手动冲突解决方案,但是有一些像这样的 hacky 解决方案可以删除所有无法合并的文件(可能很危险):https ://stackoverflow.com/a/54232519/8541886


推荐阅读