假设我有一个包含两个或更多分支的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
答案 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