315

我跑了一个git pull以冲突告终的。我解决了冲突,现在一切都很好(我也使用了 mergetool)。

当我提交已解析的文件时,git commit file.php -m "message"出现错误:

fatal: cannot do a partial commit during a merge.

我之前遇到过同样的问题,并且-a在提交中使用效果很好。我认为这不是完美的方式,因为我不想提交所有更改。我想用单独的注释单独提交文件。我怎样才能做到这一点?为什么git不允许用户在合并后单独提交文件?我找不到这个问题的满意答案。

4

19 回答 19

487

我发现在提交命令中添加“-i”可以为我解决这个问题。-i 基本上告诉它在提交之前暂存其他文件。那是:

git commit -i myfile.php
于 2011-11-09T09:39:50.760 回答
129
git commit -am 'Conflicts resolved'

这对我有用。你也可以试试这个。

于 2014-01-09T05:51:21.547 回答
39

您可以git commit -i在大多数情况下使用,但如果它不起作用

你需要做git commit -m "your_merge_message"。在合并冲突期间,您无法合并一个文件,因此您需要

  1. 仅暂存有冲突的文件 ( git add your_file.txt)
  2. git commit -m "your_merge_message"
于 2013-03-07T09:45:58.927 回答
22

-m当我在解决 git 合并冲突时忘记了我的 git 提交时,我得到了这个。

git commit "commit message"

应该

git commit -m "commit message"
于 2015-11-10T17:30:15.190 回答
18

您可能在尚未提交提交的内容中遇到冲突。git 不会让你独立提交事情(因为它是合并的一部分,我猜),所以你需要git add那个文件,然后git commit -m "Merge conflict resolution". -i标志为git commit您添加。

于 2012-01-19T22:52:36.023 回答
9

正如错误消息所说,您无法在合并后进行部分提交。file.php您应该提交所有更改,而不是只提交。

这应该有效。

git commit -m "Fixing merge" 
于 2016-04-18T00:37:38.957 回答
8

看起来你错过了 -m 提交命令

于 2020-12-02T19:24:17.407 回答
6

您的合并在操作中间停止。您应该添加文件,然后添加“git commit”:

git add file_1.php file_2.php file_3.php git commit

干杯

于 2015-01-13T10:10:59.683 回答
6
  1. 转到您的项目目录
    1. 显示隐藏文件(.git 文件夹会出现)
    2. 打开 .git 文件夹
    3. 删除 MERGE_HEAD
    4. 再次提交
    5. 如果 git 告诉您 git 已锁定,请返回 .git 文件夹并删除 index.lock
    6. 再次提交这次一切都会正常工作。
于 2018-12-04T09:13:01.100 回答
5

如果你只是想放弃整个挑选文件并在任何你想要的集合中提交文件,

git reset --soft <ID-OF-THE-LAST-COMMIT>

带你到那里。

软重置的作用是将指向当前 HEAD 的指针移动到您提供的提交(ish),但不会更改文件。硬重置将移动指针并将所有文件恢复到该提交(ish)中的状态。这意味着通过软重置,您可以清除合并状态,但保留对实际文件的更改,然后根据您的喜好单独提交或重置它们。

于 2013-08-21T09:42:16.147 回答
5

有时在合并期间,如果出现冲突并且存在需要手动解决的增量。在这种情况下,修复提到的文件的手动分辨率。

现在,如果你发出,

git status Lib/MyFile.php

你会看到像这样的输出

On branch warehouse
Your branch and 'origin/warehouse' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

    modified:   Lib/MyFile.php

由于您已经提交了提交,因此您只需要发出

git commit

您的提交将毫无问题地完成。

于 2019-12-12T05:14:31.347 回答
4

看完所有评论后。这是我的决议:
我不得不再次“添加”它而不是提交:

$ git commit -i -m support.html "doit once for all" [master 18ea92e] support.html
于 2019-02-02T23:03:00.947 回答
3

对我自己来说,当我在解析所有文件之前尝试提交合并时,这发生在 SourceTree 中。然后我将最后一个文件标记为已解决,但在尝试提交时它仍然给我这个错误。我关闭了 SourceTree 并重新打开它,然后它正常提交。

于 2014-05-05T14:36:25.390 回答
3

我用完全不同的方法解决了这个问题,只使用 Xcode 的源代码控制。

背景:另一个团队将更改推送到远程 Git 存储库(通过 Beanstalk)。就我而言,.xcodeproj 文件位于不同的目录下,并且没有进行更改。后来,当我尝试提交时,我在 Xcode 中收到了 Tree Conflict 错误。

树冲突截图

由于使用 Xcode 几乎不可能更正,我用.xcodeproj从 Git 服务器下载的版本替换了该文件。结果... Xcode 项目似乎清理干净了,但是来自损坏的 Pull 的所有更新都显示为我所做的更改,并已为提交而暂存。

查看所有这些 Mod 和添加的文件

但是,在尝试提交时,我收到了相同的“致命:在合并期间无法执行部分提交”错误,此处讨论。

以下是我解决问题的方法......(现在,了解我是一个菜鸟程序员,所以我可能缺乏一些理解......但我的无知让我找到了另一种方法。)首先,我克隆了我的主人分支到辅助分支并切换到该分支。然后我创建了一个工作副本并将该工作副本的目录放在原始项目目录之外。(我不知道这是否有必要,但这是我在阅读其他故障排除技术时所做的。)然后我将分支切换到主分支,在那里我意识到我所有的暂存文件(对提交的更改)都消失了。为了确保所有文件都更新到对方所做的最新更改,我创建了一个名为 ThirdBranch 的新分支,它复制了所有文件,将其推送到 Git 服务器,让 Beanstalk 将我的 master 分支的服务器版本与我刚刚推送的 ThirdBrach 分支(逐行)进行比较,并且对方的所有更改都存在于我的 Xcode 上。这意味着我的主存储库和 Git 主存储库是相同的,这证明我仅使用 Xcode 解决了问题。

不要问我是怎么做的,除了我刚才描述的……当然要填补我遗漏的空白。我是新手,我什么都不懂。也许有经验的程序员可以将不相关的信息与相关信息区分开来,并更清楚地重新创建这种技术,这也是我发布这篇文章的部分原因。

这是对重复问题的重复答案,如:Failed Xcode Git Merge is stand

于 2016-01-08T20:40:11.033 回答
2

在合并期间,出于各种原因,Git 想要跟踪父分支。你想要做的不是 git 看到的合并。您可能希望手动进行变基或挑选。

于 2011-04-29T04:41:30.850 回答
2

git commit -i -m 'merge message'对我不起作用。它说:

fatal: No paths with --include/--only does not make sense.

FWIW,我通过这个相关问题来到这里,因为我收到了这条消息:

fatal: You have not concluded your merge (MERGE_HEAD exists).

我还尝试了mergetool,它说No files need merging。很混乱!所以 MERGE_HEAD 不在需要合并的文件中-??

最后,我使用这个技巧只添加了修改过的文件(不想添加树中的所有文件,因为我有一些我想保持不被跟踪):

git ls-files -m | xargs git add

然后我终于(!)能够提交并推动。如果 git 能更好地提示您在这些情况下该怎么做,那肯定会很好。

于 2015-10-19T20:08:35.327 回答
2

如果它在Source Tree中,我们应该在冲突解决后将文件显式标记为已解决。选择刚刚解决为无冲突的文件。然后Actions -> Resolve Conflicts -> Mark Resolved。如果您有多个文件,请对所有文件执行相同操作。现在提交。

于 2017-05-30T10:42:10.420 回答
2

如果您使用源代码树或其他 GUI,请确保检查所有文件(合并后)。

于 2019-08-15T14:30:24.600 回答
2

git commit -m "comment"解决冲突后只需工作..

于 2021-11-15T06:04:20.433 回答