禁止与已删除文件的合并冲突

时间:2018-06-14 13:10:37

标签: git merge conflict

假设我有一个包含两个或更多分支的git存储库。在分支a中我删除了一些文件:

分支B(分支分支A):

git rm fileA.txt 
git rm fileB.txt

现在我们在分支A中做了很多更改。其中一些更改是在fileA.txt和/或fileB.txt中完成的。 我们必须将分支A合并到分支B中,因为我们需要所有更改。现在我与fileA.txt和/或fileB.txt发生了冲突:

CONFLICT (modify/delete): fileA.txt ...

这是正常的git行为。但我不希望在每个合并形式分支A到分支B我得到这些冲突。它应该自动接受删除这些文件。

如何做到这一点?

问候,Sascha

1 个答案:

答案 0 :(得分:0)

你不能告诉Git在git merge运行期间更喜欢删除文件。

可以做的事情是自动清理Git在自动合并失败时留下的混乱,就像这些修改/删除冲突之后一样。

请参阅my answer相关问题:git rebase conflicts, how to delete all conflicting files that were deleted in the HEAD

在那里,与合并基础提交相比,您在HEAD提交和提示提交中删除但已修改的文件将在第2阶段存在在索引中,但将存在于第1和第3阶段。

他们已删除但已修改的文件将存在于第1阶段和第2阶段,但不存在于第3阶段。

您可以阅读整个索引内容,注意哪些文件存在于哪个阶段。从这里,你应该确定你想删除哪些文件。使用git rm删除它们(从它们存在的所有索引阶段和工作树中删除)并解决了这些冲突。如果您编写一个程序来执行此操作,您将自动完成此部分:

git checkout <branch>             # set up your HEAD
git merge <other>                 # start the merge, which gets conflicts
program-to-clean-up-the-index     # do file-deletions automatically
git status                        # see what's left to do
...                               # do whatever is required
git commit                        # finish the merge