我已经创建了一个对话框分支,当我试图合并到主分支。有两个冲突。我不知道如何解决冲突(删除/修改)。你能告诉我该怎么办吗?
$ 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添加src/DialogAdapter.java。我还需要做什么?
冲突信息:
CONFLICT (delete/modify): res/layout/dialog_item.xml deleted in dialog and modified in HEAD
这意味着res/layout/dialog_item.xml在你要合并的'dialog'分支中被删除了,但是在HEAD中被修改了(在你要合并的分支中)。
所以你必须决定是否
使用“git rm res/layout/dialog_item.xml”删除文件
or
使用“git add res/layout/dialog_item.xml”接收HEAD中的版本(可能是在编辑后)
然后你用“git commit”完成合并。
注意,git会警告你,你正在创建一个合并提交,在(罕见的)情况下,它是你不想要的。可能是在这种情况不那么罕见的年代留下的。
我通常只运行git mergetool,它会提示我,如果我想保留修改的文件或保留它删除。这是最快的方法,因为它是一个命令,而不是每个文件几个。
如果你在一个特定的子目录下有一堆被删除的文件,你想要通过删除这些文件来解析它们,你可以这样做:
yes d | git mergetool -- the/subdirectory
d用于选择删除每个文件。也可以使用m保存修改后的文件。从运行mergetool时看到的提示中获取:
Use (m)odified or (d)eleted file, or (a)bort?