什么时候删除git功能分支?

时间:2010-08-02 22:49:02

标签: git version-control branch

我不想最终得到82 feature branches hanging around,所以我想知道只要我将它合并到master就删除功能分支有什么潜在的缺点。

工作流:

git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz

这里有什么问题吗?

5 个答案:

答案 0 :(得分:86)

我在合并后删除,但我总是做git merge --no-ff,以避免快速转发,以便分支历史在图表上可见。我想了解功能分支从开发分支离开的位置以及它加入的位置的历史记录:

Merging with or without fast-forwards

这是来自A successful Git branching model的文森特·德里森(Vincent Driessen),这是一个非常好用的工作流程,可以用于我的大多数项目。

答案 1 :(得分:52)

合并后删除是常用方法。这就是git branch -d检查以确保分支在删除之前完全合并的原因。

我可以考虑保留一个分支机构的一些原因:您可能希望保留它,以防一旦它出现生产错误,或者您可能想要一个历史记录。

在任何一种情况下,您都可以选择在删除之前标记分支的头部。标签就像一个分支,因为它是一个指向提交的指针,除了一些细微的差异:1)瓷器通常不会在探测命令中显示标签,如git show-branch或tab-auto complete in checkout,2)检查一个会让你进入一个分离的(非参考)HEAD 3)你可以留下一个“tagging message”,这会导致标签像提交一样被保存为对象存储中的一个对象。

这样您可以保留历史记录,如果您确实需要进行错误修复,我建议您只需为修补程序创建一个新的分支。

答案 2 :(得分:7)

我可以想到为什么你可能想要保留一个功能分支的两个原因:

  • 有可能会因为上游的更多工作而被踢回来。
  • 其他开发人员可能想要该功能,而不需要掌握其他所有功能。

实际上,合并后删除的大部分时间都很好。

答案 3 :(得分:6)

典型的工作流程

 // Create new branch
 $ git checkout -b myfeature
 // and then do some changes and commit them

 // Switch to master branch
 $ git checkout master

 // Merge myfeature to master. --no-ff will always keep branch information.
 $ git merge --no-ff myfeature

 // Delete myfeature branch
 $ git branch -d myfeature

 // Push the changes
 $ git push origin master

答案 4 :(得分:1)

我认为这是典型的工作流程(合并后删除)

EDIT 所以,至少对于短期分支而言,不是合并,我认为这个想法是将它们变为主人。然后你最终得到线性变化历史,整个分支成为主干线的一部分。在这种情况下,您可以进行所有更改,因此您显然不需要副本。