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


94

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

我通常会创建很多分支,因为我不想破坏当前的发行版,并且我希望删除它们以使事情井井有条。
但是,如果您使用Assembla或GitHub,则来自旧分支的合并请求将保存在站点上,因此,如果删除它们,则会收到错误消息,因为它将无法获取它们。

通常如何处理?

Answers:


72

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


您说过,所有提交在历史记录中仍然可用。如果我在github.com上查看一个项目,我会发现这是真的。但是,在Mac的Github桌面应用程序中,看来您不再能看到合并分支的提交历史记录。我错了吗?
Peacetype

我要补充一点,如果您不使用git客户端,特别是不使用带有gui的客户端,那么拥有分支机构可以帮助您更好地了解日志。也就是说,由于您没有要查看的github / gitlab / other gui,因此保留分支名称可以使您除了提交历史记录之外,还拥有一个简单的位置来引用历史记录-否则由于删除分支而丢失。如果最后的陈述是错误的,请让我知道。
2016年

@Raj以Merge branch fix-foo-bar提交消息的形式已经拥有了。尝试git log --grep="Merge branch",然后通过放下您自己感兴趣的锚点git checkout -b curious-change。此外,删除分支时,什么也不会丢失-除了仅是“ branchname→commithash”指针(分支实际上是分支,与本地或远程无关)。
ulidtko

@ fred-foo虽然这不是一个好习惯的问题,但是没有得到回答。(我有同样的问题)
Esger

27

合并后,我肯定会清理它们。

我们使用GitLab并在工作中合并请求,因此有关分支的历史信息存储在此处;我不需要他们在我的分支列表中打乱,当我看着同事的叉子时,理想情况下,我只希望看到他们当前活跃开发的分支。如果我尝试查看其分支上的某些代码,则希望能够仅浏览几个当前活动的分支,而不是他们开始使用的每个功能或修复程序。

上面的内容也适用于BitBucket和GitHub。

您不删除合并后分支的唯一原因是,您知道给定功能的结束位置,但是合并提交(git merge --no-ff如果您确实需要),则使此无关紧要。


3
显然GitHub总是--no-ff,因此即使在这种情况下,我们也不会失去这是一个分支的事实。
joeytwiddle

7
@joeytwiddle:假设您使用的是GitHub自己的界面来合并分支,是的!
Asherah 2014年


0

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

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

如果您需要处理过旧的分支,可以查看一些实用程序,例如this

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.