我有一个名为 work_in_progress 的分支,用于调试和测试具有许多小提交的代码。所有这些都有冗余的提交消息。 当我完成后,我想将壁球合并到主分支。通常,使用 - squash 参数进行合并时,这是一个单一命令。
但我如何使用 SmartGIT ?
进行此操作这里的文档How to perform squash merges似乎是错误的,因为没有选项"分支由选定的提交及其祖先" 组成。
此处的文档How to perform normal merges and squash merges根本不起作用。我试过了,我仍然看到日志中的所有小提交。我之后可以删除 work_in_progress 分支,一切正常,但我希望在主分支的历史记录中使用单个提交消息进行单次提交。
修改:这是我的提交对话框中的屏幕截图。我想我错过了"简单提交"选项?!也许我不理解说明^^
编辑2 :以下是日志的屏幕截图。顶部的第二次提交是使用SmartGIT完成的。您可以看到所有中间提交(包括消息)在历史记录中都可见。该分支称为XYZ_work_in_progress。最后(最顶层)提交是使用" git merge --squash ABC_work_in_progress"但是所有的提交都被吞噬了,所以这是一个干净的历史。来自分支的所有工作都会累积到一个提交中,并带有一条消息:-)
答案 0 :(得分:7)
以下是典型的情况:在您的功能分支上开发的东西,同时世界不断转动,更多的东西发生在公共主分支上。
4)右键点击主提示(第1行)选择Rebase HEAD to...
(当然不 Rebase到HEAD ...➝麻烦,赢了&# 39;对于几个步骤变得如此明显......)。按对话框中的按钮进行确认。
5)你在顶部播放了功能提交。作为空心的橙色圆圈,因为事情尚未发生。
6)右键单击要素分支,说Push to...
。选择(o)Tracked or matching branch
和-important- [x]Force Pushing
(因为您正在更改功能分支的“历史记录”...)
历史现在看起来很干净,您的提交符合要求,即快速转发:
Merge...
。在选项对话框中,您必须选择Merge to Working Tree
(否则提交会在您无法选择任何选项的情况下进行,即壁球)。您可能需要也可能不需要through resolving and then continue。
最后,说提交。选择(o) Simple commit (one parent, "squash")
......她在那里:
答案 1 :(得分:0)
较新版本的 SmartGit 提供了一个简单的解决方案。您可以选择多个提交,然后从弹出菜单中选择“Squash Commits...”: