Git 扩展:壁球提交?

Git Extensions: Squash commits?

为了压缩多次提交,我一直使用:

git reset --soft HEAD~<number of commits to squash> && git commit

但我想知道在像 git 扩展这样的好 git 客户端中是否有好的方法来做到这一点?如果您可以 select 连续提交并压缩它们,那就太好了。

(假设您使用的是 Windows)

是的,我相信TortoiseGit可以做到。作为 TortoiseSVN 的老用户,我会推荐它。查看提交日志时,您可以执行以下操作:

此外,当您使用 TortoiseGit 提交时,您可以选择简单地修改您之前的提交,因此您可以随时进行此操作。当您执行此操作时,它还会拉入最后的提交消息(出于隐私原因,我在屏幕截图中清除了我的)。

当然,我相信你已经知道这一点,但不要试图合并或修改已经推送到远程的提交,否则你的下一次推送将惨败。

作为额外奖励,当您在资源管理器中浏览您的工作副本时,您将获得覆盖图标的好处。

您可以通过两种方式使用 GitExtensions 轻松实现这一目标。

第一个 是做完全相同的事情,但是从 GUI 开始,当你不想使用你观察到的提交的现有提交消息来压缩时,它是合适的. .

 git reset --soft HEAD~<number of commits to squash>

在 GitExtensions 的历史浏览器中,右键单击您要保留的最后一次提交,然后 select 'reset branch to here'。然后select选项'soft'

 git commit

然后提交仍在暂存的更改。

第二个是一个'rebase --interactive':

右键单击上述相同的提交,然后 select 'rebase on'。在弹出窗口中选中复选框 'interactive'.

然后,在编辑器中,将提交操作设置为 'squash'。在做之前阅读一份关于交互式变基的好文档。当您想要根据来自您正在压缩的提交的提交消息构建一个好的提交消息时,此解决方案是完美的。

壁球有多种方法。

以下是如何轻松地将当前和所有其直接父提交压缩为Git Extensions中的单个提交:

  1. 右键单击要压缩的提交,然后 select“将当前分支重置到此处”
  2. Select“软重置”(保留暂存文件)或“混合重置”(取消暂存所有文件)
  3. 舞台,如有必要
  4. 提交

这是上面的动画:


另一种方法是进行“交互式变基”

  • 通过命令行(git rebase -iread docs)或
  • 通过 UI(例如 Git 扩展)。

要在 Git 扩展中进行交互式变基:

  1. 右键单击您希望压缩到的提交,然后 select“将当前分支重新设置为 > Selected 交互提交...”
  2. 在显示的对话框中更改历史记录,例如选择要压缩或改写的提交
  3. 保存并关闭

这是上面的动画:

这是已接受答案的减速版本