如何替换N个提交

时间:2017-08-21 09:49:22

标签: git github git-commit

如何将GitHub存储库中的最后9次提交合并为一次提交?

4 个答案:

答案 0 :(得分:2)

git stash -u             # save uncommitted changes
git reset --soft HEAD~9  # move back 9 commits
git commit               # recommit them
git stash pop            # restore uncommitted changes

要将结果推回GitHub,请确保您的本地副本在操作之前是最新的,并强制它:git push -f

答案 1 :(得分:1)

进行交互式变基:

git rebase -i HEAD~9

您将按时间顺序放入编辑器中,其中包含最近9次提交的列表。每个都以“挑选”一词开头。您可以将其中任何一个更改为“squash”或“s”,将其压缩到上一次提交中。您将有机会编辑压缩提交的提交消息。默认情况下,这将是连接在一起的所有提交的提交消息。

您还可以删除提交,将'pick'替换为'reword',以便有机会更改提交消息,'编辑'提交以及消息等。

交互式rebase功能非常强大,因此值得学习使用它。

答案 2 :(得分:0)

使用挤压: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html

Squashing允许您将多次提交“压缩”为一次提交。所以基本上你的9次提交将成为一次提交。

答案 3 :(得分:0)

我认为最好的方法是使用git rebase interactive。

git rebase -i HEAD~9

这样做可以打开最后九次提交,你可以按自己喜欢的方式编辑它们。您可以删除最近九次提交中的任何一项。既然你想要结合(替换是有点共同的,所以避免使用那个词)所有这九个提交成一个,你应该压缩那些提交。

使用此网站了解有关git rebase interactive的更多信息。当我对git相当新的时候,我发现这非常有用。这种技术非常方便。 Git rebase interactive description