我在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上搜索过,但我不明白该怎么做。
答案 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并合并"来将拉取请求中的所有提交压缩成单个提交。拉动请求。
如果您想在拉取请求中手动压缩提交,请参阅fontno's answer。
答案 3 :(得分:6)
尝试git rebase -i
,并使用'squash'进行您要压缩的所有提交。
编辑:
git rebase -i
将向您显示一个交互式编辑器,其中包含您正在进行变更的提交列表。每次提交之前的默认命令是“pick”,所以你只需要s / pick / squash /用于你想要压缩的所有提交,然后所有这些提交都将被压缩到他们上一次的提交中。
确保您在正确的分支上变基础。