【问题标题】:Squash 2 commits into 1 [duplicate]Squash 2 提交到 1 [重复]
【发布时间】:2019-08-12 10:36:03
【问题描述】:

我在本地有两个提交:

commit adae40c5e2b69a41447b08cc3dcb77003611fbbe
Author: Me
Date:   Thu Mar 21 14:17:35 2019 +0000

    1.0.0

commit ceaa65ea06f48dc24554a6f798aae2d668f3a43d
Author: Me
Date:   Fri Feb 1 10:04:36 2019 +0000

    first commit

如何压缩这些,以便只有一个带有消息 1.0.0 的提交?

我尝试了以下方法,但都没有为我工作:

git rebase -i HEAD~2
git rebase -i master

【问题讨论】:

  • 您是否在打开的编辑器窗口中将第二次提交的pick 更改为squash
  • 在您的具体情况下,RomainValeri 的回答可能是最简单的解决方案。但是,了解为什么交互式 rebase 不适合您可能会很有用,因为 rebase 是一个更强大/更通用的工具,并且可以在简单的 reset + commit 不起作用的许多情况下工作

标签: git git-rebase git-squash


【解决方案1】:

对于那些不喜欢交互式变基的人,在这种情况下,倒带和重新提交也很容易:

git reset --soft HEAD~2
git commit -m "1.0.0"

【讨论】:

  • 变基是 Git 中一个特别有用的功能,但它不会压缩提交,它会做相反的事情并保留每个提交。 reset 然后 commit 您布置的过程非常适合压缩提交历史记录。
  • @benhorgen 你是对的。我的回答不清楚,但我确实提到了 interactive 变基(然后在应该选择squash 的地方)而不是“正常”变基。
  • @benhorgen - 我不确定你的意思。 rebase 确实可以压缩提交。确实,在任何 rebase 之后(至少暂时)保留了原始提交,但 rebase-and-recommit 方法也是如此。
猜你喜欢
  • 2021-06-18
  • 2016-03-01
  • 2013-05-20
  • 1970-01-01
  • 2016-12-25
  • 2022-01-22
  • 2016-09-04
  • 2018-11-01
  • 2017-10-27
相关资源
最近更新 更多