合并后提交的Git错误 – 致命:在合并期间不能执行部分提交

我跑了一场以冲突结束的git pull 。 我解决了冲突,现在一切正常(我也使用了mergetool)。

当我提交解决的文件与git commit file.php -m "message"我得到的错误:

 fatal: cannot do a partial commit during a merge. 

我之前有同样的问题,使用-a完成工作。 我认为这不是完美的方式,因为我不想承诺所有的改变。 我想用不同的注释分别提交文件。 我怎样才能做到这一点? 为什么git不允许用户在合并之后单独提交文件? 我找不到满意的答案。

我发现在commit命令中join“-i”可以解决这个问题。 -i基本上告诉它在提交之前放置额外的文件。 那是:

 git commit -i myfile.php 
 git commit -am 'Conflicts resolved' 

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

你可以在大多数情况下使用git commit -i ,但是如果不行的话

你需要做的git commit -m "your_merge_message" 。 在合并冲突期间,您不能合并单个文件,所以您需要

  1. 阶段只有冲突的文件( git add your_file.txt
  2. git commit -m "your_merge_message"

你可能在你没有提交的东西上发生冲突。 git不会让你独立提交东西(因为它是合并的一部分,我想),所以你需要git add该文件,然后git commit -m "Merge conflict resolution"git commit-i标志为你添加。

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

 git commit "commit message" 

应该

 git commit -m "commit message" 

你的合并在行动的中间停了下来。 你应该添加你的文件,然后'git commit':

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

干杯

由于错误消息说你不能在合并后进行部分提交。 而不是只提交file.php你应该提交所有的变化。

这应该工作。

 git commit -m "Fixing merge" 

如果你只是想整个樱桃采摘,并提交任何你想要的文件,

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

把你带到那里。

什么软复位会将指向当前HEAD的指针移动到您提交的提交(ish),但不会更改这些文件。 硬重置会移动指针,并将所有文件恢复到提交(ish)状态。 这意味着软复位可以清除合并状态,但保留更改为实际的文件,然后提交或重置它们每个单独你喜欢。

在合并期间,Git希望通过各种原因跟踪父分支。 你想要做的不是git所看到的合并。 您可能会想要手动进行重新挑选或樱桃select。

对于我自己,这发生在SourceTree当我试图提交一个合并之前解决所有的文件。 然后,我标记了最后解决的文件,但它仍然给了我这个错误,当试图提交。 我closures了SourceTree并重新打开它,然后它承诺罚款。

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给你提供了关于在这些情况下做什么的更好的提示,那肯定会很好。

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

背景:另一个团队推送到远程Git仓库(通过Beanstalk)。 在我的结尾,.xcodeproj文件进入不同的目录下,并没有采取的变化。 后来,当我尝试提交时,我收到了Xcode中的树冲突错误。

树冲突截图

几乎不可能使用Xcode进行更正,我用从Git服务器下载的版本replace了.xcodeproj文件。 结果… Xcode项目似乎已经清理完毕,但是来自腐败Pull的所有更新都显示为我所做的更改,并且正在进行一次Commit。

看看所有这些国防部和增加的文件

然而,当试图提交时,我收到了同样的“致命的:不能做合并期间的部分提交”错误,这里讨论。

下面是我如何解决这个问题…(现在,明白我是一个新手程序员,所以我可能缺乏一些理解…但我的无知导致我find另一种方式来做到这一点)首先,我克隆我的主人分成二级分支并切换到该分支。 然后,我创build了一个工作副本,并将目录放置在原始项目目录之外的那个工作副本上。 (我不知道这是否是必要的,但是当我阅读其他故障排除技术时,我做了什么)。然后,我将分支切换到主控,在那里我意识到我的所有Staged文件(更改提交)都没有了。 为了确保所有文件都更新到对方所做的最新更改,我创build了一个名为ThirdBranch的新分支,它复制所有文件,将其推送到Git服务器,让Beanstalk比较我的服务器版本的主分支到ThirdBrach分支我只是推(一行行),另一方的所有更改都出现在我的Xcode。 这意味着我的主存储库和Git主存储库是相同的,这certificate我只用Xcode解决了这个问题。

不要问我如何,超出我刚才所描述的,而且肯定填补了我遗漏的空白。 我是新来的,我什么都不懂。 也许一个有经验的程序员可以从相关的信息中分离出不相关的信息,并且更清楚地重现这个技术,这也是我发布这个技术的部分原因。

这是一个重复的问题重复的答案如下: 失败的Xcode Git合并卡住了

如果它在源代码树中 ,我们应该在冲突解决之后明确地标记文件为已解决。 select刚刚解决的文件不会发生冲突。 然后操作 – >解决冲突 – >标记已解决 。 如果您有多个文件,请对所有文件执行相同的操作。 现在提交。