繁体   English   中英

如何使用 SmartGIT 在一次提交中压缩合并从分支到主控的多个提交?

[英]How to squash merge multiple commits from branch to master in a single commit using SmartGIT?

我有一个名为work_in_progress的分支,用于调试和测试具有许多小提交的代码。 它们都有冗余的提交消息。 完成后,我想将壁球合并到分支。 通常这是使用--squash参数合并时的一个命令。

但是我如何使用SmartGIT做到这一点

这里的文档如何执行壁球合并似乎是错误的,因为没有选项“由选定的提交及其祖先组成的分支”

此处的文档如何执行正常合并和挤压合并根本不起作用。 我已经尝试过了,我仍然在日志中看到所有小的提交。 之后我可以删除work_in_progress分支,一切都很好,但是我想要在master分支的历史记录中使用单个提交消息进行一次提交。


编辑:这是我的提交对话框的屏幕截图。 我想我错过了“简单提交”选项?! 可能我没看懂说明^^ 在此处输入图片说明


编辑2 :这是日志的屏幕截图。 顶部的第二次提交是使用 SmartGIT 完成的。 您可以看到所有中间提交(包括消息)都在历史记录中可见。 该分支名为 XYZ_work_in_progress。 最后一次(最重要的)提交是使用“git merge --squash ABC_work_in_progress”完成的,但所有提交都被吞没了,所以这是一个干净的历史。 来自分支的所有工作都累积到一个带有单个消息的提交中 :-) 在此处输入图片说明

这是典型的情况:在你的特性分支上开发的东西,同时世界一直在转动,更多的东西发生在公共主分支上。

之前:rebase 功能分支(推荐)

  1. 功能和主分支,所有拉和推。 没有挂起的提交。
  2. 黄绿色标签告诉您,您应该已经检查了您的功能分支并处于其尖端(头部修订)。 (黄色和绿色彼此相邻可确保您没有任何推或拉待处理。)

在此处输入图片说明

4)右键单击提示(第1行),选择Rebase HEAD to... (当然不是Rebase to HEAD... ➝麻烦,这在几个步骤中不会变得如此明显...)。 按对话框中的按钮进行确认。

5)您将功能提交放在首位。 如空心橙色圆圈,因为事情尚未提交。

6) 右键单击​​功能分支,说Push to... 选择(o)Tracked or matching branch和 —重要 — [x]Force Pushing (因为您正在“更改功能分支的历史记录”...)

历史现在看起来很干净,你的提交是一致的,也就是快进:

在此处输入图片说明

壁球提交

  1. 切换到(签出)主树。 右键单击功能分支,说Merge... 在选项对话框中,您必须选择Merge to Working Tree (否则提交时您将无法选择任何选项,即挤压)。

在此处输入图片说明

  1. 您可能需要也可能不需要通过解决然后继续

  2. 最后,说提交。 Pick (o) Simple commit (one parent, "squash")

在此处输入图片说明

......她在那里:

在此处输入图片说明

较新版本的 SmartGit 提供了一个简单的解决方案。 您可以选择多个提交,然后从弹出菜单中选择“Squash Commits...”:

带有壁球选项的弹出菜单

暂无
暂无

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

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