繁体   English   中英

Git 扩展:Squash 提交?

[英]Git Extensions: Squash commits?

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

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

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

有多种方法可以做壁球。

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

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

这是上面的动画:

在此处输入图片说明


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

  • 通过命令行( git rebase -i阅读文档),或
  • 通过 UI(例如 Git 扩展)。

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

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

这是上面的动画:

在此处输入图片说明

这是已接受答案的减慢版本:

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

(假设您使用的是 Windows)

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

组合多个提交上下文菜单

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

修改最后一次提交

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

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

资源管理器图标

您可以通过 2 种方式使用 GitExtensions 轻松实现这一点。

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

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

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

 git commit

然后提交仍处于暂存阶段的更改。

第二个是 'rebase --interactive' :

右键单击上述相同的提交并选择“rebase on”。 在弹出窗口中选中“交互式”复选框。

然后,在编辑器中,将提交操作设置为“挤压”。 在做之前阅读关于交互式 rebase 的好文档。 当您想根据您正在压缩的提交的提交消息编写良好的提交消息时,此解决方案是完美的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM