在开发分支中保留提交历史记录,但仅合并主分支中的提交

问题描述 投票:0回答:1

我想保留开发中的提交历史记录,但只保留 main 中的合并提交。我认为挤压合并可以做到这一点,但显然它会产生这里描述的问题:在挤压合并之后,提交历史记录仍然显示在合并请求中作为分支之间的差异,即使它们在那时应该是相同的

还有其他方法可以实现这一点吗?也许我不需要在开发中保留提交,但我希望能够在我们公司的 bitbucket 帐户上浏览它们。

git merge bitbucket
1个回答
0
投票

这听起来像是对什么是合并、什么是分支以及什么是 Git 的误解。

快速总结一下:

  • Git 是一个由提交组成的非循环有向图,每个提交(创建的第一个提交除外)至少有一个父提交。 “历史”是通过从任何给定的提交向后跟踪父链来生成的。

  • 分支只是一次提交的名称。

  • 合并提交与通过编辑-添加-提交周期进行的普通提交不同,完全由 Git 本身创建。根据定义,它至少有two父母;通常(尽管不一定),在合并之前,这些是您说

    git merge
    时所在的分支,以及作为该命令的“直接对象”的分支
    git merge <otherbranch>

那么现在。您希望“能够回浏览”合并到 main 中的提交,这是绝对正确的,即维护以存储库拓扑表示的真实历史。只有合并提交才能做到这一点。

考虑到这种愿望,并假设这就是您想要做的,那么说“在开发中保留提交历史记录,而仅保留合并提交”是毫无意义且无用的。根据分支的定义,只有一次提交是

main
。您错误地认为“在主中”的其他提交是通过主提交和任何父提交的父链可到达的提交的总和。这就是历史,正如我一开始就规定的那样。 因此,如果没有创建合并提交时合并的两个分支的任一

历史记录中的所有提交,就不可能在“主”(或任何分支)中拥有真正的合并提交.

所以别担心,开心就好。您始终可以忽略所有合并的第二个父级来遍历历史记录,在这种情况下,您将获得您正在寻找的单一合并提交链;但这并不是因为这就是主要的,而是因为这是您选择

查看

历史的方式。

© www.soinside.com 2019 - 2024. All rights reserved.