【问题标题】:Git: can't commit a file even though I've resolved the conflictGit:即使我已经解决了冲突也无法提交文件
【发布时间】:2012-06-30 06:49:55
【问题描述】:

我从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 status 时会显示什么?
  • 它将style.css 列为已修改。但是,我什至尝试完全放弃更改(它们是次要的),git commit 仍然说style.css 有冲突!
  • 这可能只是提交信息。默认消息会像这样列出最后有冲突的文件。 git log 是否显示合并?
  • hmm...您是否尝试过通过资源管理器/文件浏览器删除文件,然后使用git rm <file>(如果您希望保留它,请确保将其备份到非 repo 文件夹中)。再次提交并推送,然后重新添加已删除的文件并提交/推送?
  • @vergenzt git log 显示了我的最后一次提交,但并不表示它以任何方式合并。

标签: git add commit conflict stage


【解决方案1】:

我将解释这里发生的基本情况:

您的拉动启动了远程分支的合并(因为您没有使用“-r”标志进行变基,而这会进行变基)。合并本身发生冲突并中止(这也意味着您的拉动没有完成)。现在,在您解决了冲突之后,您将不得不添加有冲突的文件并执行“git commit”以实际完成您的拉取(以及所需的合并)。这将删除您的提交消息中提到的文件“.git/MERGE_HEAD”,这表明您当前处于合并中间。

在此之后,您处于清洁状态,一切都会好起来的。

【讨论】:

  • 这听起来合乎逻辑,但正如您在我的问题中看到的那样,我确实添加了冲突文件,但它仍然不允许我提交。除非你说我应该手动删除.git/MERGE_HEAD 文件?
【解决方案2】:

我自己也遇到过这个问题,在寻找解决方案时发现了这个问题。 “冲突”消息出现在我的默认文本编辑器中。在 gitshell 仍然打开的情况下关闭文本编辑器允许提交完成。

【讨论】:

    【解决方案3】:

    好的,所以这在技术上并不能解决最初的问题,但它确实解决了这个问题。我所做的是将我的更改备份到style.css,然后将我的本地dev 分支重置为origin/dev。这解决了它认为的冲突,因为 local 和 origin 现在是相同的,但也将我的本地 dev 分支放在了这个过程中。

    所以我只是将我的备份 style.css(有我最近的更改)与我现在的本地版本进行比较,合并我的更改并提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多