我接管了一个大的git仓库,里面有很多分支,似乎没有人真正知道它们是怎么回事。有没有什么方法可以把分支放在某种分组或文件夹中,使它们仍然存在,但不一定要列出?使重要的树枝更容易被发现。
**编辑:**我希望能够区分我使用的分支和对我没有意义但仍然无法删除的分支。
icnyk63a1#
您可以使用/,分支将显示为分组到文件夹中(仅显示)例如,2个分支,名称为:dev/major/minor1个dev/major/minor2个将显示为这样(假设是一棵树):
/
dev/major/minor1
dev/major/minor2
dev |---major | |---minor1 | |---minor2
字符串
zf9nrax12#
删除分支。如果没有人知道它们是什么,也没有人声称拥有它们,那么就不太可能有人会这样做。就像囤积旧报纸“以防万一”一样,它们只会妨碍事情的完成。让它去吧。特别是如果他们相当落后,很可能是一个皮塔更新。删除它们会很快告诉你是否有任何东西或任何人依赖于它们。为了一点可控的痛苦,你将解决一个巨大的不确定性。人们将学会不要把重要的东西放在周围,把一切都弄得乱七八糟。分支在Git中是短暂的东西,很容易以各种方式恢复。您可以做一些简单的事情来使此过程更容易和更强大。这主要是为了让你的开发者对删除分支的想法更满意。
在Git中,标签基本上和分支完全一样,它们只是提交上的一个标签。不同的是他们不动。在分支尖端上创建标记,然后删除分支尖端。标签将引用提交并防止它们被垃圾收集。
git tag <tag> <branch> git branch -d <branch>
字符串您可以将其与Maor's answer结合使用,并将标记组织到一个类似archived_branches/的目录中。如果有人想在这个归档的分支上工作,他们可以从标记创建一个分支并删除标记。
archived_branches/
git checkout -b <tag> <branch> git tag -d <tag>
型这在Git中是一个非常便宜的过程。最终,当一段时间内没有人使用这些存档的标签时,您可以将其删除为dead。在制作标签存档时商定一个日期。将其标记在共享日历上。
一定要检查分支内容中是否有任何可挽救的内容。如果有的话,你可以把它变成一个活跃的分支,或者cherry pick有用的位。让那些想把老树枝留在身边“以防万一”的人来做这项工作。
您可以检查哪些分支已与master git branch --merged master合并。删除合并的分支。提交之间的连接将保留分支的内容,合并提交将保留该分支的内容。比如...
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?了解更多详细信息。
D - E - F
G
Git倾向于在垃圾收集之前将旧的提交保留大约两周,这样可以给你一些缓冲。您可以在某处记下它们的提交ID,或者使用reflog来恢复它们。恢复它们就像git branch <name> <commit id>一样简单。
git branch <name> <commit id>
你的仓库的备份(你有备份,对吗?)给予你另一个缓冲。
最后,您可以在删除旧分支之前克隆存储库并将其存放在某个地方。如果发现一个旧的分支需要被恢复删除,它可以从该归档存储库中提取。但很可能没有人会再去想那些老树枝了。
2条答案
按热度按时间icnyk63a1#
您可以使用
/
,分支将显示为分组到文件夹中(仅显示)例如,2个分支,名称为:
dev/major/minor1
个dev/major/minor2
个将显示为这样(假设是一棵树):
字符串
zf9nrax12#
删除分支。
如果没有人知道它们是什么,也没有人声称拥有它们,那么就不太可能有人会这样做。就像囤积旧报纸“以防万一”一样,它们只会妨碍事情的完成。让它去吧。特别是如果他们相当落后,很可能是一个皮塔更新。
删除它们会很快告诉你是否有任何东西或任何人依赖于它们。为了一点可控的痛苦,你将解决一个巨大的不确定性。人们将学会不要把重要的东西放在周围,把一切都弄得乱七八糟。
分支在Git中是短暂的东西,很容易以各种方式恢复。您可以做一些简单的事情来使此过程更容易和更强大。这主要是为了让你的开发者对删除分支的想法更满意。
制作成标签
在Git中,标签基本上和分支完全一样,它们只是提交上的一个标签。不同的是他们不动。在分支尖端上创建标记,然后删除分支尖端。标签将引用提交并防止它们被垃圾收集。
字符串
您可以将其与Maor's answer结合使用,并将标记组织到一个类似
archived_branches/
的目录中。如果有人想在这个归档的分支上工作,他们可以从标记创建一个分支并删除标记。
型
这在Git中是一个非常便宜的过程。
最终,当一段时间内没有人使用这些存档的标签时,您可以将其删除为dead。在制作标签存档时商定一个日期。将其标记在共享日历上。
回收分支内容
一定要检查分支内容中是否有任何可挽救的内容。如果有的话,你可以把它变成一个活跃的分支,或者cherry pick有用的位。
让那些想把老树枝留在身边“以防万一”的人来做这项工作。
删除所有合并的内容
您可以检查哪些分支已与master
git branch --merged master
合并。删除合并的分支。提交之间的连接将保留分支的内容,合并提交将保留该分支的内容。比如...型
D - E - F
是分支中的提交,G
是合并提交。合并提交的消息,如果他们做的事情是正确的,将包含一些关于他们正在做什么的引用。也许是问题跟踪器的链接。请参阅my answer to Why should I delete feature branches when merged to master?了解更多详细信息。使用reflog
Git倾向于在垃圾收集之前将旧的提交保留大约两周,这样可以给你一些缓冲。您可以在某处记下它们的提交ID,或者使用reflog来恢复它们。恢复它们就像
git branch <name> <commit id>
一样简单。使用备份
你的仓库的备份(你有备份,对吗?)给予你另一个缓冲。
克隆
最后,您可以在删除旧分支之前克隆存储库并将其存放在某个地方。如果发现一个旧的分支需要被恢复删除,它可以从该归档存储库中提取。
但很可能没有人会再去想那些老树枝了。