我是git的新手,我提交了一些修改,git告诉我需要先pull,所以我pull了,但我的编辑器没有显示修改后的版本,所以我再次提交,但有冲突,我解决了冲突,然后再次提交。现在我有三个承诺!(虽然我认为第一个不应该在那里)问题是我每次提交后都推。那么有没有一种方法可以合并那些推送的提交呢?你能提供一个逐步的解释吗?我以前用过svn和cvs,但我对git还是个新手
mdfafbf11#
您描述的情况似乎不太可能,因为在冲突中尝试提交会导致以下错误:
fatal: 'commit' is not possible because you have unmerged files. Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution and make a commit, or use 'git commit -a'.
如果你不能提交冲突,那么运行git push实际上不会推动更改。您可以运行以下命令来查看实际发生了哪些提交
git log --patch --color
webghufk2#
如果我正确理解了你的问题,这应该是你想要的:您可以使用git rebase -i HEAD~3将这三个提交压缩在一起。这基本上会 * 摆脱 * 你的错误提交,最后一次提交的内容将是最终的内容。当您运行该命令时,将弹出一个编辑器。将第二行和第三行中的pick替换为squash。然后,您需要再次按下-f标志。如果它们是你的最后三个提交,这将起作用。如果他们比这更落后。你需要更进一步地变基,并且只把squash放在你想要压缩的两个提交上。
git rebase -i HEAD~3
pick
squash
-f
2条答案
按热度按时间mdfafbf11#
您描述的情况似乎不太可能,因为在冲突中尝试提交会导致以下错误:
如果你不能提交冲突,那么运行git push实际上不会推动更改。
您可以运行以下命令来查看实际发生了哪些提交
webghufk2#
如果我正确理解了你的问题,这应该是你想要的:
您可以使用
git rebase -i HEAD~3
将这三个提交压缩在一起。这基本上会 * 摆脱 * 你的错误提交,最后一次提交的内容将是最终的内容。当您运行该命令时,将弹出一个编辑器。将第二行和第三行中的
pick
替换为squash
。然后,您需要再次按下-f
标志。如果它们是你的最后三个提交,这将起作用。如果他们比这更落后。你需要更进一步地变基,并且只把
squash
放在你想要压缩的两个提交上。