Git远程修剪-没有显示出我所期望的那么多修剪过的枝条

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (5)

从手册页:

删除以下所有陈旧的跟踪分支<name>...。这些陈旧的分支已经从远程存储库中删除。<name>,但仍可在本地使用,如“Remotes/Remotes/<name>“

所以我用

git push origin :staleStuff

然后

git remote prune origin

然而,只修剪了一个本地分支。其中一些分支是我创建的,有些是同事创建的。这是否表明我一开始就没有正确地跟踪这些分支?

提问于
用户回答回答于

当你使用git push origin :staleStuff,它会自动删除origin/staleStuff所以当你git remote prune origin,你修剪了一些被别人移除的树枝。你的同事现在更有可能git prune为了摆脱你已经移除的树枝。


那么到底是什么git remote prune有吗?大意:本地分支(不跟踪分支)不受git remote prune命令,并应手动删除。

现在,一个更好地理解现实世界的例子:

有一个具有两个分支的远程存储库:masterfeature...。让我们假设正在处理两个分支,因此在本地存储库中有这些引用(为了避免任何混淆,给出了完整的引用名称)

  • refs/heads/master(简称master)
  • refs/heads/feature(简称feature)
  • refs/remotes/origin/master(简称origin/master)
  • refs/remotes/origin/feature(简称origin/feature)

现在,有一个典型的场景:

  1. 其他一些开发人员完成了对feature,把它合并成master移除feature来自远程存储库的分支。
  2. 默认情况下,当这样做时git fetch(或git pull),本地存储库中没有删除引用,因此仍然有这4个引用。
  3. 你决定把它们清理干净,然后git remote prune origin...
  4. GIT检测到feature分支不再存在,所以refs/remotes/origin/feature陈腐应该移除的树枝。
  5. 现在有了3个参考资料,包括refs/heads/feature,因为git remote prune不移除任何refs/heads/*参考资料。

可以通过以下方法识别与远程跟踪分支相关联的本地分支branch.<branch_name>.merge配置参数。此参数实际上并不是任何工作所必需的(可能除了git pull),所以它可能不见了。

扫码关注云+社区