我有一个名为 work_in_progress 的分支,用于调试和测试包含许多小提交的代码。它们都有冗余的提交信息。 完成后,我想将 squash merge 到 master 分支。通常这是使用 --squash 参数 merge 时的一个命令。
但是我如何使用 SmartGIT 来做到这一点?
此处的文档 How to perform squash merges似乎是错误的,因为没有选项“由所选提交及其祖先组成的分支”。
此处的文档 How to perform normal merges and squash merges根本行不通。我试过了,我仍然在日志中看到所有小的提交。之后我可以删除 work_in_progress 分支,没问题,但我想要在 master 分支的历史记录中使用单个提交消息进行一次提交。
编辑:这是我的提交对话框的截图。我想我错过了“简单提交”选项?!可能我没看懂教程^^
编辑 2:这是日志的屏幕截图。顶部的第二个提交是使用 SmartGIT 完成的。您可以看到所有中间提交(包括消息)在历史记录中都是可见的。该分支名为 XYZ_work_in_progress。最后一次(最重要的)提交是使用“git merge --squash ABC_work_in_progress”完成的,但所有提交都被吞没了,所以这是一个干净的历史。来自分支的所有工作都累积到带有一条消息的单个提交中:-)
最佳答案
这是典型的情况:在您的功能分支上开发了一些东西,与此同时,世界在不断变化,更多的东西发生在公共(public)主分支上。
之前: rebase 功能分支(推荐)
- feature 和 master 分支,全部 pull 和推。没有待定 promise 。
- 你应该检查你的功能分支并在它的顶端(head-revision),黄绿色标签告诉你。 (黄色和绿色彼此相邻可以确保没有待处理的推或 pull 。)
4) 右键单击master 提示(第 1 行)选择 Rebase HEAD to...
(当然不是 Rebase to HEAD。 .. ➝ 麻烦,这不会在几个步骤后变得如此明显......)。按对话框中的按钮进行确认。
5) 你得到了在顶部播放的功能提交。作为空心橙色圆圈,因为事情尚未提交。
6) 右键单击功能分支,说 Push to...
。选择(o)Tracked or matching branch
和—important—[x]Force Pushing
(因为您正在“更改功能分支的历史”...)
历史现在看起来很干净,您的提交符合要求,也就是可快速转发:
挤压提交
- 切换到( checkout )主树。右键单击功能分支,说
Merge...
。在选项对话框中,您必须选择Merge to Working Tree
(否则提交发生时您无法选择任何选项,即 squash)。
最后说一下提交。选择
(o) 简单提交(一个父级,“squash”)
...她就在那里:
关于git - 如何使用 SmartGIT 在一次提交中将多个提交从分支 merge 到主控?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33277942/