合并后是不是应该删除分支?

Posted

技术标签:

【中文标题】合并后是不是应该删除分支?【英文标题】:Should I delete a branch after merging it?合并后是否应该删除分支? 【发布时间】:2012-06-01 16:19:05 【问题描述】:

合并分支后,是否将其从存储库中删除? 但是,这是一个好习惯吗?

我通常会创建很多分支,因为我不想破坏我当前的版本,我希望删除它们以保持秩序。 但是,如果您使用 Assembla 或 GitHub,来自旧分支的合并请求将保存在站点上,因此如果您删除它们,您将收到错误,因为它无法获取它们...

通常如何管理?

【问题讨论】:

【参考方案1】:

删除已合并的分支没有问题。所有提交在历史记录中仍然可用,即使在 GitHub 界面中,它们仍然会显示(参见,例如,this PR 指的是一个分叉PR被接受后我已经删除了)。

【讨论】:

您说所有提交在历史记录中仍然可用。如果我在 github.com 上查看一个项目,我会发现这是真的。但是,在 Mac 的 Github 桌面应用程序中,您似乎无法再看到合并分支的提交历史记录。我弄错了吗? 我要补充一点,如果您不使用 git 客户端,尤其是不使用带有 gui 的客户端,那么拥有分支有助于更好地理解您的日志。也就是说,由于您没有要查看的 github/gitlab/other gui,因此保留分支名称可以让您有一个简单的位置来引用历史记录以及提交历史记录——否则会因删除分支而丢失。如果这最后的陈述是错误的,请告诉我。 @Raj 你已经有了,以Merge branch fix-foo-bar 提交消息的形式。尝试git log --grep="Merge branch",然后通过git checkout -b curious-change 删除您自己感兴趣的锚点。此外,删除分支时不会丢失任何内容——除了“branchname → commithash”指针(这是一个真正的分支,与本地或远程无关)。 @fred-foo 虽然这是一个好的做法,但没有回答这个问题。 (我也有同样的问题)【参考方案2】:

我肯定会在合并后清理我的分支。

我们在工作中使用 GitLab 并合并请求,因此有关分支的历史信息存储在那里;我不需要他们弄乱我的分支列表,当我查看同事的分支时,理想情况下我只想看到他们当前积极开发的分支。如果我想查看他们分支上的一些代码,我希望能够只查看几个当前活动的分支,而不是他们开始处理的每个功能或修复。

以上内容也适用于 BitBucket 和 GitHub。

您在合并后不删除分支的唯一原因可能是让您知道给定功能的结束位置,但合并提交(如果您真的想要,还可以使用 git merge --no-ff)使这无关紧要。

【讨论】:

显然是GitHub always does --no-ff,所以即使在这种情况下,我们也不会忘记这是一个分支的事实。 @joeytwiddle:假设你使用 GitHub 自己的接口来合并分支,是的!【参考方案3】:

只要照顾好 您的 DELETED 分支的所有超链接 URL 引用都将BROKEN

例如 如果您从仓库中删除 branch_feature_x 分支 该分支对应的超链接URL会被破坏https://github.com/username/project/tree/branch_feature_x

【讨论】:

【参考方案4】:

澄清一下,从 git 的角度来看,分支只是 链接 到某个提交。 通过删除分支,您不会从 git repo 中删除提交。当然,detached 提交将在一段时间后通过 git 垃圾收集器清理。

仅供参考:我们通常通过 bitbucket 接口将分支合并到 master 中。在那里你可以设置delete feature branch after merge 标志。

如果你需要处理太旧的分支,你可以看看一些实用程序,例如this one。

【讨论】:

请务必查看Stack Overflow’s self-promotion rules。至少,您需要披露您与所建议的实用程序的从属关系。

以上是关于合并后是不是应该删除分支?的主要内容,如果未能解决你的问题,请参考以下文章

合并后分支如何处理

TFS 获取分支 -> 回滚 -> 向后合并并希望删除所有更改

Git 分支代码合并到主干的命令

合并到 master 后,如何检查来自哪个分支的哪些提交以及从何处删除的合并?

git分支的创建与合并

git:为啥我不能在壁球合并后删除我的分支?