Git:尽管我已经解决了冲突,但无法提交文件

4
我从 origin 拉取更新到本地时,其中一个文件存在冲突。我解决了这个冲突,但是由于 git 仍然认为该文件存在冲突,所以我无法进行本地提交。
$ git add style.css

这个有效 - 没有错误或任何问题。然后:

$ git commit

Merge branch 'dev' of [origin] into dev

Conflicts:
        [path]/style.css
#
# It looks like you may be committing a MERGE.
# If this is not correct, please remove the file
#       .git/MERGE_HEAD
# and try again.
#

为什么这个不起作用?

可能那只是提交信息。默认消息列出了最后发生冲突的文件,就像那样。git log显示合并了吗? - vergenzt
嗯...你试过通过资源管理器/文件浏览器移除文件,然后使用 git rm <file> 命令(如果你想保留它,确保将其备份到非版本库文件夹中)。再次提交并推送,然后重新添加已删除的文件并再次提交/推送吗? - bill-x
@BillX 即使我删除了文件并使用 git rm,当我执行 git commit 时它仍然告诉我有冲突。 - daGUY
那么 git commit 没有任何副作用吗?你可以多次运行它而不会有任何变化吗? - vergenzt
你也删除了文件.git/MERGE_HEAD吗? - bill-x
显示剩余3条评论
3个回答

2
我将解释一下这里发生的基本情况:
您的拉取请求启动了远程分支的合并(因为您没有使用“-r”标志进行变基,这会执行变基操作)。合并本身存在冲突并中止(这也意味着您的拉取请求未完成)。现在,在您解决冲突后,您需要添加有冲突的文件并执行“git commit”以实际完成您的拉取请求(以及所需的合并)。这将删除您提交消息中提到的“.git/MERGE_HEAD”文件,该文件显示您当前处于合并过程中。
此后,您处于干净状态,一切都应该正常。

2
听起来很合理,但正如您在我的问题中所看到的,我确实添加了冲突的文件,但它仍然不允许我提交。除非您是说我应该手动删除.git/MERGE_HEAD文件? - daGUY

1
我刚刚自己遇到了这个问题,然后在寻找解决方案时发现了这个问题。 "冲突"消息出现在我的默认文本编辑器中。关闭带有gitshell的文本编辑器使提交完成。

0

好的,这个方法并没有在技术上解决原来的问题,但是它确实绕过了这个问题。我的做法是备份了 style.css 的更改,然后将本地的 dev 分支重置为 origin/dev。这样解决了它认为的冲突,因为本地和远程现在完全相同了,但同时也使得本地的 dev 分支落后了一个提交。

然后我只需将备份的 style.css(其中包含我最近的更改)与当前的本地版本进行比较,并将我的更改合并并提交。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接