【问题标题】:git: squash three last commits togethergit:将最后三个提交压缩在一起
【发布时间】:2020-08-21 13:55:48
【问题描述】:

我想将我的最后 3 个提交压缩在一起(从 ax38aa 到 ax18aa)。

我有

commit ax18aa
commit ax28aa
commit ax38aa
commit ax48aa
commit ax58aa

代码

git rebase -i ax48aa

但很惊讶当我这样做时 git log 我只有

commit ax48aa
commit ax58aa

并且没有向 mi 询问提交的新消息。我能怎么做?请? 谁能帮忙 谢谢你,

【问题讨论】:

  • 这能回答你的问题吗? Squash my last X commits together using Git
  • @mnestorov 没有。我做了 git rebase -i ax48aa
  • 执行git rebase -i HEAD~3时是否会出现同样的结果
  • 但现在在我的 git 日志中我没有 commit ax18aa commit ax28aa commit ax38aa 所以看不到:/.
  • @mnestorov 你能帮帮我吗?``

标签: git rebase


【解决方案1】:

可以这样做:

git reset --soft ax38aa
git commit --amend -m "some blahblah"

【讨论】:

  • 谢谢@eftshift() 但我不想压缩 ax58aa 我的意思是压缩提交的新提交 提交 ax18aa,提交 ax28aa,提交ax38aa
  • git reset --soft ax38aa
  • 你还需要在“some blahblah”之前加上-m
【解决方案2】:

看起来您在交互式 rebase 期间 squashed 了所有提交,使您处于 rebasing 状态。这意味着您当前正在执行 rebase,但尚未完成,只能看到最旧的两个提交 ax48aaax58aa。摆脱这种情况的最简单方法是:

git rebase --abort

这将丢弃您可能所做的任何更改,并将您置于变基之前的状态。如果您仍然没有看到所有 5 次提交,请查看 refloggit reflog,找到第一个提交并执行 git reset --hard ax18aa

现在再次进行新的变基,但这一次,pick 是您交互式变基中最旧/最高的提交。

git rebase -i HEAD~3
# or
git rebase -i ax48aa

然后执行以下操作:

pick ax38aa commit message 3
squash ax28aa commit message 2
squash ax18aa commit message 1

这会做你想做的。

另外请记住,在你的 rebase 之后,你将有一个新的提交,你需要强制推送到你的远程仓库,以便上传你的更改!

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2016-05-22
    相关资源
    最近更新 更多