将我的所有提交压缩为一个用于GitHub pull请求

时间:2013-01-26 06:11:57

标签: git github pull-request squash

我在GitHub上发了一个pull请求。现在,存储库的所有者正在说要将所有提交压缩成一个。

当我键入git rebase -i时,会打开记事本,其中包含以下内容:

noop

# Rebase 0b13622..0b13622 onto 0b13622
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

我在Google上搜索过,但我不明白该怎么做。

4 个答案:

答案 0 :(得分:45)

只是一个简单的补充,以帮助其他人寻找此解决方案。您可以传递您想要压缩的先前提交的数量。例如,

git rebase -i HEAD~3 

这将在编辑器中显示最后3次提交。

答案 1 :(得分:35)

好吧我明白了...... 首先,我必须写git rebase -i xxxxxxxxxxxxxxxx,其中xxxxxxxxxx是我要压缩的提交的SHA。然后在记事本中我编辑了第一个作为壁球的选择和休息。然后会出现一个新的记事本窗口,在第一行中我输入了我的新提交的名称。 然后我不得不做推力:

git push --force origin master

答案 2 :(得分:10)

As of April 1, 2016,存储库管理员可以通过选择" Squash并合并"来将拉取请求中的所有提交压缩成单个提交。拉动请求。

Squash and merge option

如果您想在拉取请求中手动压缩提交,请参阅fontno's answer

答案 3 :(得分:6)

尝试git rebase -i,并使用'squash'进行您要压缩的所有提交。

编辑:

git rebase -i将向您显示一个交互式编辑器,其中包含您正在进行变更的提交列表。每次提交之前的默认命令是“pick”,所以你只需要s / pick / squash /用于你想要压缩的所有提交,然后所有这些提交都将被压缩到他们上一次的提交中。

确保您在正确的分支上变基础。