我已经接管了一个大型git存储库,其中包含许多分支,但似乎没有人真正知道它们的全部含义。有什么方法可以将分支放在某种分组或文件夹中,以便它们仍然存在但不一定列出?使重要分支更容易发现。
编辑:我希望能够区分与我合作的分支和对我而言没有任何意义但仍然无法删除的分支。
答案 0 :(得分:3)
您可以使用/
,分支将按分组显示在文件夹中(仅显示)
即2个分支,分别为:
dev/major/minor1
dev/major/minor2
将这样显示(假定是一棵树):
dev
|---major
| |---minor1
| |---minor2
答案 1 :(得分:3)
删除分支。
如果没有人知道他们是什么,也没有人向他们提出要求,那么任何人都不会。就像ing积旧报纸以防万一一样,它们只是妨碍完成事情。放手吧。尤其是如果它们落后并且很可能是要更新的PITA。
删除它们会很快告诉您是否有任何东西依赖于它们。对于极小的可控制的痛苦,您将解决很大的不确定性。人们将学会不要将重要的东西留在混乱的地方。
分支是Git中的临时事物,很容易以各种方式恢复。您可以做一些简单的事情来使此过程更轻松,更可靠。这主要是为了使您的开发人员更满意删除分支的想法。
在Git中,标签基本上与分支完全相同,它们只是提交中的标签。不同之处在于它们不动。在分支尖端上标记,然后删除分支尖端。标记将引用提交并防止其被垃圾回收。
git tag <tag> <branch>
git branch -d <branch>
您可以将其与Maor's answer结合使用,并将标签组织到archived_branches/
之类的目录中。
如果有人想在该归档分支上工作,则可以从标记创建一个分支并删除该标记。
git checkout -b <tag> <branch>
git tag -d <tag>
这在Git中是非常便宜的过程。
最终,当一段时间内没有人使用这些归档标签时,您可以将它们删除为失效。进行标签归档的日期。将其标记在共享日历上。
确保检查分支内容是否有任何可挽救的内容。如果有的话,可以将其设为活动分支,或者cherry pick个有用的位。
让希望“以防万一”保留旧分支的人来完成这项工作。
您可以检查哪些分支已与主git branch --merged master
合并。删除合并的分支。提交之间的连接将保留分支,合并合并将保留该分支。例如...
A - B - C --------- G - H - I [master]
\ /
D - E - F
D - E - F
是分支中的提交,而G
是合并提交。如果合并提交的操作正确,则它们将包含有关其工作内容的某种参考。也许是问题跟踪器的链接。有关更多详细信息,请参见my answer to Why should I delete feature branches when merged to master?。
Git倾向于在垃圾回收之前将旧提交保留大约两个星期,这样可以给您一些缓冲。您可以在某处记下它们的提交ID,或使用reflog来恢复它们。恢复它们就像git branch <name> <commit id>
一样简单。
存储库的备份(您有备份,对吗?)为您提供了另一个缓冲区。
最后,您可以在删除旧分支并将其松散到某个地方之前对存储库进行克隆。如果发现需要删除旧分支,则可以将其从该存档库中拉出。
但是可能没有人会再考虑那些旧的分支机构。