如何解决由于删除分支中的文件而导致的合并冲突?

我创build了一个dialog分支,当我尝试合并到master分支。 有两个冲突。 我不知道如何解决CONFLICT (delete/modify) 。 你能告诉我该怎么办?

 $ git checkout master $ git merge dialog CONFLICT (delete/modify): res/layout/dialog_item.xml deleted in dialog and modified in HEAD. Version HEAD of res/layout/dialog_item.xml left in tree. Auto-merging src/com/DialogAdapter.java CONFLICT (content): Merge conflict in src/DialogAdapter.java Automatic merge failed; fix conflicts and then commit the result. 

我打开src/DialogAdapter.java ,修正了冲突,并做了一个git add src/DialogAdapter.java 。 我还需要做什么?

冲突消息:

 CONFLICT(删除/修改):在对话框中删除res / layout / dialog_item.xml并在HEAD中修改

意味着res/layout/dialog_item.xml在您正在合并的“对话框”分支中被删除,但在HEAD(在您合并的分支中)被修改。

所以你必须决定是否

  • 使用“ git rm res/layout/dialog_item.xml ”删除文件

要么

  • 使用“ git add res/layout/dialog_item.xml ”接受HEAD的版本(可能在编辑之后)

然后你最终确定与“ git commit ”合并。

请注意,git会警告你,你正在创build一个合并提交,在罕见的情况下,你不想要的东西。 可能从案件不太less的那段时间开始。

我通常只运行git mergetool ,它会提示我,如果我想保留修改后的文件或保持删除。 这是最简单的方法,恕我直言,因为它是一个命令,而不是每个文件几个。

如果你在窗口上使用Git Gui,

  1. 中止合并
  2. 确保你在你的目标分支
  3. 从资源pipe理器中删除冲突的文件
  4. 重新扫描Git Gui(F5)
  5. 注意冲突的文件被删除
  6. 从提交菜单中select阶段已更改的文件提交(Ctrl-I)
  7. input提交评论,如“已删除的冲突文件”
  8. 提交(按Ctrl键)
  9. 现在,如果你重新启动合并,它将(希望)工作。