Squash commit to master 保留与 dev 的通信
Squash commit to master that preserves correspondence with dev
在常见的 git 工作流程中,您将 master 分支到功能分支或开发分支,进行许多小的提交,然后在测试工作时合并回 master。
为了保持主人的历史干净,你可以git merge --squash dev
。这允许您在 feature 或 dev 分支中保留更详细的历史记录,同时保持 master 干净。
完成后,您还可以return开发,合并master,继续工作,重新开始整个过程。如果这样做,您将获得如下所示的历史记录:
问题是从图中看不出 master 的尖端和 dev 上的 HEAD~1 实际上代表相同的状态(因为 master 只是 dev 历史的压扁)。
是否有更好的方法来进行此合并,以便:
- 压缩提交和粒度提交的等价性是显而易见的
- 细粒度的提交历史保存在它自己的分支中,我是否需要查看该级别的详细信息。 (这已经通过我描述的解决方案实现了——我澄清我不想牺牲这个)
我怀疑这不是你想要的答案,但我认为正常的合并是清楚地传达历史的最佳方式。
特别是如果你有一个分支和提交消息的命名方案,可以很容易地看到哪些提交是在功能分支中进行的,哪些是在主分支中的。 (合并提交会自动获取其中合并分支的名称,并将该名称的某种形式放入提交消息中将使它很容易追踪)
merge --squash
是隐藏合并。这是根本问题。你已经隐藏了它,但你仍然希望看到它。
在常见的 git 工作流程中,您将 master 分支到功能分支或开发分支,进行许多小的提交,然后在测试工作时合并回 master。
为了保持主人的历史干净,你可以git merge --squash dev
。这允许您在 feature 或 dev 分支中保留更详细的历史记录,同时保持 master 干净。
完成后,您还可以return开发,合并master,继续工作,重新开始整个过程。如果这样做,您将获得如下所示的历史记录:
问题是从图中看不出 master 的尖端和 dev 上的 HEAD~1 实际上代表相同的状态(因为 master 只是 dev 历史的压扁)。
是否有更好的方法来进行此合并,以便:
- 压缩提交和粒度提交的等价性是显而易见的
- 细粒度的提交历史保存在它自己的分支中,我是否需要查看该级别的详细信息。 (这已经通过我描述的解决方案实现了——我澄清我不想牺牲这个)
我怀疑这不是你想要的答案,但我认为正常的合并是清楚地传达历史的最佳方式。
特别是如果你有一个分支和提交消息的命名方案,可以很容易地看到哪些提交是在功能分支中进行的,哪些是在主分支中的。 (合并提交会自动获取其中合并分支的名称,并将该名称的某种形式放入提交消息中将使它很容易追踪)
merge --squash
是隐藏合并。这是根本问题。你已经隐藏了它,但你仍然希望看到它。