【问题标题】:When does Git refresh the list of remote branches?Git 什么时候刷新远程分支列表?
【发布时间】:2016-07-21 08:59:19
【问题描述】:

使用git branch --all 显示所有远程本地 分支。 Git 什么时候刷新这个列表?

拉/推?以及如何使用Git Bash 刷新它?

【问题讨论】:

  • 请注意,git ls-remote 在这里可能很有趣。
  • 别忘了在git branch --all之前使用git fetch

标签: git github branch remote-branch


【解决方案1】:

更新远程分支的本地列表:

git remote update origin --prune

显示(本地)Git 知道的所有本地和远程分支

git branch -a

【讨论】:

  • git remote update origin --prune 是我要找的东西
  • 关于使用git remote update的这个答案与使用git fetchsee here的公认答案之间的区别
  • 这是正确答案。 git fetch 没有删除我的远程分支的本地缓存。只有--prune 能够将其全部清理干净。
  • 你可以让 git 自动使用git config remote.origin.prune true
  • git remote prune origin 有同样的效果,你输入的更少。
【解决方案2】:

OP 没有要求清理所有遥控器,而是要求清理默认遥控器的所有分支。

所以应该使用git fetch --prune

设置git config remote.origin.prune true 使--prune 自动。在这种情况下,git fetch 也会从本地副本中删除过时的远程分支。另请参阅Automatic prune with Git fetch or pull

请注意,这不会清除不再跟踪远程分支的本地分支。请参阅 How to prune local tracking branches that do not exist on remote anymore

【讨论】:

  • 让它更短一点git fetch -p
【解决方案3】:

我相信,如果您从 Bash 运行 git branch --all,您看到的远程和本地分支列表将反映您在运行命令时本地 Git “知道”的内容。由于您的 Git 始终与系统中的本地分支保持同步,因此本地分支列表将始终准确无误。

但是,对于远程分支,情况并非如此。您的本地 Git 只知道它在上次提取(或拉取)中看到的远程分支。因此,您可能运行git branch --all 并且没有看到一个新的远程分支出现在您最后一次获取或拉取之后

为确保您的本地远程分支列表是最新的,您可以在运行git branch --all之前执行git fetch

关于更多信息,运行git branch --all 时出现的“远程”分支根本不是真正的远程;他们实际上是本地的。例如,假设远程上有一个名为 feature 的分支,您至少将它拉入本地 Git 一次。当您运行git branch --all 时,您将看到origin/feature 列为一个分支。但这个分支实际上是一个本地 Git 分支。当您执行git fetch origin 时,此跟踪分支将使用来自远程的任何新更改进行更新。这就是为什么您的本地状态会变得陈旧的原因,因为可能有新的远程分支,或者您的跟踪分支可能会变得陈旧。

【讨论】:

  • 是的,git fetch 做到了。
  • git fetch 对我不起作用,需要添加 --prune。顺便说一句,我不是downvoter ;)
  • git fetch 不会删除已删除的远程分支。这可能就是为什么有些人不赞成
【解决方案4】:

使用git fetch 获取所有最新创建的分支。

【讨论】:

  • git fetch 在 git 2.17.1 中对我没有任何改变。您使用的是哪个版本和选项?
  • 您需要 --prunegit config remote.NAME.prune true 来解决 OP 问题
【解决方案5】:

如果你使用的是 Eclipse,

  1. 打开“Git 存储库”
  2. 找到您的存储库。
  3. 打开“分支”,然后打开“远程跟踪”。

他们应该都在里面。右键单击并“结帐”。

【讨论】:

  • 这如何回答这个问题? - “Git什么时候刷新远程分支列表?”
  • 当我想在 eclipse 中刷新我的本地分支时,我用谷歌搜索,它把我带到了这里。这篇文章实际上帮助了一些人,因为它得到了一些支持。也许我误解了这个问题。对我来说,Eclipse 就是 Git(它的接口)。对不起,冒犯了大家!
猜你喜欢
  • 2015-10-31
  • 2010-11-14
  • 2018-05-01
  • 2011-07-16
  • 2016-10-20
  • 2014-04-16
  • 1970-01-01
  • 2022-06-11
相关资源
最近更新 更多