Git 仓库大扫除

作者:大鱼

https://segmentfault.com/a/1190000016628588

本文转载自我的博客:https://mengqi92.github.io/2018/09/18/git-housekeeping/

Git 可以说是目前最受欢迎的版本管理工具了,很多团队也都在用它来管理自己的项目代码。在一个多人协作的项目中,往往采用的是一个分支一个特性进行开发,随着每天的代码提交、合并,仓库中会有越来越多的冗余分支。这么多死分支不仅会掩盖真正在使用的分支,而且也为管理带来不便。如果你像我一样,也经常被淹没在 或 返回的分支大海中,那么,就是时候考虑给你的 git 仓库做一次大扫除了!

本地分支与远程分支

大扫除之前,首先给自己做个深呼吸,回忆一下远程仓库和远程分支的概念。

我们本地的仓库既保留有本地的分支,也保留有跟踪远程仓库的 remote 分支(类似 这种的)。后者相当于是远程仓库分支在本地仓库的代理,每次 或 时,都会将远程仓库的分支同步到本地对应的 remote 分支上。

比如远程仓库新增了一个 分支,那么我们在本地 后,会得到一个 分支,这个名字表示 这个远程仓库下的 , 是本地给远程仓库默认起的名字,你当然也可以改成别的名字。

理清楚了本地分支和远程分支,本地仓库和远程仓库,接下来我们就动起手来做清理吧!

本地分支清理

查看我们本地的分支只需要执行一下:

我们还可以找出所有已经合入到 的本地分支:

针对这些已经合入的分支,如果确定已经不会使用的话,就可以将其删除了:

如果十分确定所有合入的分支都不再需要了,那么可以考虑一次性解决( 是匹配当前分支,其余 部分可以根据自己项目的实际情况进行修改):

这么一来,就可以安全地删除所有已经不再需要的分支了。除此之外,也可以浏览一下没有合入 master 的本地分支,检查看看哪些分支已经废弃,不需要继续开发了:

针对这些分支,只用 命令会收到系统的善意提醒。如果十分确定可以删除,那么可以使用强制删除命令(一定要确认好啊):

经过这么一番清理,相信你的本地分支现在已经十分轻佻了, 返回的结果看起来也十分清爽。接下来就来清理一下本地的远程分支。

远程分支清理

远程分支的查看只需要在 命令加一个 ( ) 参数即可:

远程分支的清理,一方面是清理远程分支中,已经合入 的分支,另一方面是清理远程仓库已经删除了的分支,而本地还在跟踪的。

第二种情况的清理非常简单,只需要执行:

事实上,我们可以在每次 时,添加一个参数 ( ),这样每次 fetch 远程仓库时都可以顺手删掉本地多余的分支(建议将 直接 alias 到 命令~)。

再来看第一种情况,虽然同样可以通过 来查看已经合入 的分支,但由于远程分支不只是自己开发的,所以还需要别人的确认才能进行删除。

好在我们可以在命令行的帮助下快速筛选出每个人的分支,然后就可以把这份统计摘要发给 TA 来确认。

这行命令首先是过滤出所有已合入 的远程分支( ),然后遍历每个分支,展示( )其最后一次提交的绝对时间( )、相对时间( )和作者( )信息,按时间倒序排列( ),最后过滤出作者是 的分支。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181011A0FQ9P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券