如何解决git status“未合并的路径:”?


83

我将分支合并dog到中animal。当我去提交时,我得到以下信息:

Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution
both deleted:       ../public/images/originals/dog.ai
added by them:      ../public/images/original_files/dog.ai

我在每个分支中都有不同的目录名和文件名。该animal分支具有我想要的更改。

当我去重置头部时,它不起作用。当我执行任何其他git操作(删除,签出等)时,出现path not found错误。

我需要执行哪些命令来解决此问题?

Answers:


81

您需要做的只是:

# if the file in the right place isn't already committed:
git add <path to desired file>

# remove the "both deleted" file from the index:
git rm --cached ../public/images/originals/dog.ai

# commit the merge:
git commit

25
进一步的解释会派上用场
Francisco Ochoa '18

48

如果您的文件已被签入且文件已被合并(但尚未提交,因此合并冲突被插入到文件中),则处理这种情况的另一种方法是运行:

git reset

这将切换到HEAD,并告诉git忘记任何合并冲突,并保持工作目录不变。然后,您可以编辑有问题的文件(搜索“上游更新”通知)。解决冲突后,即可运行

git add -p

这将允许您交互式地选择要添加到索引的更改。一旦索引看起来不错(git diff --cached),您就可以提交,然后

git reset --hard

销毁工作目录中所有不需要的更改。


什么 "Updated upstream" notices
赛卡特

2
@takias:每个文件中的标记如下:<<<<<<< [branch] \n [content] \n ==== \n [content] \n [branch] >>>>>>>。我认为自从我写这篇文章以来,这种格式可能会有一点机会,但是请参见wincent.com/wiki/Git_merge_conflict_cheatsheet作为示例。
naught101 '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.