253

我已经创建了一个dialog分支,当我尝试将它合并到master分支时。有2个冲突。我不知道如何解决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. 我还需要做什么?

4

3 回答 3

320

冲突消息:

冲突(删除/修改):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 会警告您正在创建合并提交。可能是从所说的情况不那么罕见的日子里遗留下来的。

于 2009-09-04T18:23:59.827 回答
95

我通常只是运行git mergetool,它会提示我是否要保留修改后的文件或将其删除。恕我直言,这是最快的方法,因为它是一个命令,而不是每个文件多个命令。

如果您在特定子目录中有一堆已删除的文件,并且您希望通过删除文件来解决所有这些文件,您可以这样做:

yes d | git mergetool -- the/subdirectory

提供d选择删除每个文件。您还可以使用m来保留修改后的文件。取自您在运行时看到的提示mergetool

Use (m)odified or (d)eleted file, or (a)bort?
于 2016-12-28T15:11:39.773 回答
11

如果您在 Windows 上使用 Git Gui,

  1. 中止合并
  2. 确保您在目标分支上
  3. 从资源管理器中删除冲突文件
  4. 重新扫描 Git Gui (F5) 中的更改
  5. 注意冲突文件被删除
  6. 从 Commit 菜单中选择 Stage Changed Files To Commit (Ctrl-I)
  7. 输入诸如“已删除冲突文件”之类的提交注释
  8. 提交 (ctrl-enter)
  9. 现在,如果您重新启动合并,它将(希望)工作。
于 2015-08-06T05:28:35.033 回答