Git 是否有任何理由在合并分支后在本地删除它?

Git 是否有任何理由在合并分支后在本地删除它?,git,Git,我刚刚看到我的一个队友在做这件事,我想知道可能的原因。这是git worflow还是最佳实践?若然,原因为何 此外,这是否会使分支名称冲突更容易发生(例如,当两个同名的分支被推送到服务器上时)?这取决于单个开发人员是否要在本地删除其分支。人们可能会出于一些原因这样做: 如果只有活动分支,则选项卡完成、UI分支列表以及其他编辑器和shell功能将更好地工作 只保留未合并的分支可以很容易地查看正在进行的工作 如果您喜欢保留较旧的分支来记录您的工作历史,或者只是懒惰,不想删除它们,那也没关系 但是

我刚刚看到我的一个队友在做这件事,我想知道可能的原因。这是git worflow还是最佳实践?若然,原因为何


此外,这是否会使分支名称冲突更容易发生(例如,当两个同名的分支被推送到服务器上时)?

这取决于单个开发人员是否要在本地删除其分支。人们可能会出于一些原因这样做:

  • 如果只有活动分支,则选项卡完成、UI分支列表以及其他编辑器和shell功能将更好地工作
  • 只保留未合并的分支可以很容易地查看正在进行的工作
如果您喜欢保留较旧的分支来记录您的工作历史,或者只是懒惰,不想删除它们,那也没关系

但是,从共享存储库中删除它们是一种最佳做法。这是因为默认情况下,获取和推送查找整个引用列表。如果有很多,许多引用,传输它们的时间和带宽可能是重要的,并且Git也会尝试考虑所有这些引用,当确定要下载什么来尝试发送最小数量的数据时。发送少量重复数据通常比获取最小的包文件进行传输更快


此外,上面提到的所有UI好处都与大型共享存储库相关,在这些存储库中,您可能希望快速找到分支或标记。即使您不使用这些功能,您的合作伙伴也会很感激您的考虑。

通常,在合并分支时,您会删除远程分支,因为保留它们是不必要的,只会增加噪音和混乱。由您决定是否还要删除您曾经签出的、不再位于服务器上的本地分支。一般来说,我更喜欢删除它们,因为如果我没有自己的新提交,就没有必要保留它们

关于你的补充问题:

这不会使分支名称冲突更容易发生吗

不是真的;一旦远程上的分支被删除,再次使用分支名称是完全合理的。特别是对于Git流中使用的一次性分支,例如“将发布合并到开发中”。该分支可以一次又一次地创建、合并和删除


作为旁注,这里有一些轶事证据,说明为什么跟上它并删除不必要的本地分支机构是个好主意。我最近买了一台新的工作笔记本电脑,并克隆了回购协议。我一直在跟进,目前只有3家当地分支机构。没过多久,我就意识到我的旧笔记本电脑上有一些我还没推过的代码。所以我把回购协议从我的旧笔记本电脑复制到了我的新笔记本电脑上。在那次回购中,我有112家当地分行!我估计这些分支中至少有75%已经合并,可以安全地删除,另外15%永远不会合并,也可以删除,但我不愿意清除任何分支,直到我有时间确定哪些分支可以删除。回想起来,我希望我能跟上它。我可能会随身带着回购协议的副本一段时间。

首先,是的这是现在的最佳做法,为什么这是一个问题

基本上,如果分支的目的是修复一个bug,并且它已经解决了这个bug,那么保留它就没有意义了。删除分支机构将有助于保持本地清洁。现在,如果分支的目的是添加新功能,那么您可能希望保留它以修复以后发现的关于同一功能的任何错误(理想情况下,您仍然应该创建新分支)。但是,一旦目标实现了,保持这个目标又有什么意义呢

简单地说,删除分支没有强迫性,但不删除会使事情变得困难和复杂,仅此而已


此外,如果您想了解更多信息,请勾选此项。

此区域没有任何建议;每个队自己决定。对我来说,删除未使用的分支的原因是为了避免在分支名称完成时长时间输出
git branch
和短前缀。