3

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

但是我该如何使用SmartGIT呢?

此处的文档How to perform squash merges似乎是错误的,因为没有选项"Branch contains selected commit and its parents"

How to perform normal merges and squash merges here的文档根本不起作用。我已经尝试过了,我仍然在日志中看到所有的小提交。之后我可以删除work_in_progress分支,一切都很好,但我希望在分支的历史记录中进行一次提交和一条提交消息。


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


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

4

2 回答 2

7

这是典型的情况:在您的功能分支上开发的东西,同时世界不断变化,更多的事情发生在公共主分支上。

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

  1. 功能和主分支,全部拉和推。没有待处理的提交。
  2. 黄绿色标签告诉您,您应该已经检查了您的功能分支并处于其提示(head-revision)。(黄色和绿色相邻可确保没有待处理的推或拉。)

在此处输入图像描述

4)右键单击提示(line1)pick Rebase HEAD to... (当然不是Rebase to HEAD...➝麻烦,这不会变得那么明显几个步骤...)。按对话框中的按钮进行确认。

5) 你得到了在顶部播放的功能提交。作为空心的橙色圆圈,因为事情还没有提交。

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

历史现在看起来很干净,你的提交是一致的,也就是可以快速转发的:

在此处输入图像描述

壁球提交

  1. 切换到(签出)主树。右键单击功能分支,例如Merge.... 在选项对话框中,您必须选择Merge to Working Tree(否则在您无法选择任何选项的情况下发生提交,即 squash)。

在此处输入图像描述

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

  2. 最后说commit。挑选(o) Simple commit (one parent, "squash")

在此处输入图像描述

......她在那儿:

在此处输入图像描述

于 2016-02-06T09:35:24.893 回答
0

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

带有壁球选项的弹出菜单

于 2021-07-06T07:40:19.810 回答