我做了一件蠢事,结果引起了冲突。我解决了冲突,现在一切都好了(我也使用了mergetool)。

当我用git commit file.php -m "message"提交解析文件时,我得到了错误:

fatal: cannot do a partial commit during a merge.

我以前遇到过同样的问题,在commit中使用-a工作得很好。我认为这不是完美的方式,因为我不想提交所有的更改。我想用单独的注释单独提交文件。我该怎么做呢?为什么git不允许用户在合并后单独提交文件?对于这个问题,我找不到满意的答案。


当前回答

如果存在合并,则不能执行部分提交,这意味着必须提交更改、添加或删除的所有内容。

在我的例子中,文件挂起删除,但它们没有包含在提交中。一旦我包含了它们,我在sourcetree中的提交就很顺利了(我不需要使用命令行)。

立即查看签入文件下面,是否有任何未包含在提交中的更改?

其他回答

如果你只是想放弃所有的选择并提交你想要的文件集,

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

让你到达那里。

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

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

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

只运行冲突文件(git add your_file.txt) Git commit -m "your_merge_message"

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

git commit "commit message"

应该是

git commit -m "commit message"

你可能在某些事情上有冲突,但你还没有准备好。git不会让你独立提交东西(因为这都是合并的一部分,我猜),所以你需要git添加那个文件,然后git commit -m "合并冲突解决"。git commit的-i标志为你添加。

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

git commit -i myfile.php