Git什么时候刷新远程分支列表?

866

使用git branch --all命令可以显示所有的远程本地分支。Git是在何时刷新此列表呢?

在执行pull/push操作时会刷新吗?如何使用Git Bash手动刷新该列表呢?


6
注意,git ls-remote 在这里可能很有用。 - jthill
2
在执行 git branch --all 命令之前,别忘了先使用 git fetch - Lukas
6
git pull --all --prune 对我来说很管用。 - Pykler
6个回答

2032

更新本地远程分支列表:

git remote update origin --prune

显示所有本地和远程Git已知的分支:

展示所有本地和远程分支,这些分支都是 Git 已经知晓的。

git branch -a

195
谢谢。git remote update origin --prune 是我正在寻找的。 - WonderLand
7
关于使用git remote update和被采纳的答案中使用了git fetch之间的区别,请参见这里的回答:https://dev59.com/j3I-5IYBdhLWcg3wbXxN#1856504。 - Nate Anderson
11
这是正确的答案。git fetch没有删除我的本地缓存的远程分支。只有使用 --prune 才能完全清除它们。 - Felipe Alvarez
37
您可以通过 git config remote.origin.prune true 命令让 Git 自动执行此操作。 - Slate
14
git remote prune origin 拥有相同的效果,而且你需要输入的字符更少。 - Dvin
显示剩余7条评论

77

OP并没有要求清除所有远程分支,而是要清除默认远程分支的所有分支。

因此,应该使用 git fetch --prune

设置 git config remote.origin.prune true 会使 --prune 自动生效。在这种情况下,只需执行 git fetch 即可从本地副本中删除陈旧的远程分支。另请参见 自动修剪 Git fetch 或 pull

请注意,这不会清理不再跟踪远程分支的本地分支。有关详细信息,请参见 如何删除不再存在于远程的本地跟踪分支


7
简化一下,git fetch -p - Michael Warner

36

我认为,如果你在Bash中运行git branch --all命令,你将看到本地和远程分支的列表,该列表反映了你的本地Git在运行该命令时所了解的内容。由于你的Git始终与系统中的本地分支保持同步,因此本地分支列表将始终准确。

然而,对于远程分支来说情况可能并非如此。你的本地Git只知道它最后一次抓取(或拉取)时所看到的远程分支。因此,你可能会运行git branch --all命令,但却看不到上次抓取或拉取后出现的新的远程分支。

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

需要说明的是,当你运行git branch --all命令时,出现的“remote”分支实际上并不是远程分支;它们实际上是本地分支。例如,假设在远程存储库中有一个名为feature的分支,你至少已经将其拉取到了本地Git中。当你运行git branch --all命令时,你将看到origin/feature列在分支列表中。但是,这个分支实际上是一个本地Git分支。当你执行git fetch origin命令时,此跟踪分支将更新为来自远程存储库的任何新更改。这就是为什么你的本地状态可能会过期,因为可能有新的远程分支,或者你的跟踪分支可能已经过期。


4
好的,git fetch完成了它的任务。 - BendEg
7
对我来说,“git fetch”无法正常工作,需要添加“--prune”。顺便说一下,我不是那个给你点踩的人 ;) - Deqing
5
git fetch 命令不会删除远程已经被删除的分支,这可能是一些人给出反对票的原因。 - Jérôme MEVEL
简而言之,不正确的命令是:git remote update origin --prune。 - Macilias

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

1
“git fetch” 对我来说在 git 2.17.1 中没有改变任何东西。你使用的是哪个版本和选项? - PointedEars
5
你需要使用 --prune 或者 git config remote.NAME.prune true 来解决 OP 的问题。 - Oliver

1
我使用
git fetch --all --prune --tags --prune-tags --progress

将以下内容添加到我的运行命令文件(.zshrc或.bashrc),这样我就可以快速输入“gitf”来触发此命令:
alias gitf='git fetch --all --prune --tags --prune-tags --progress'

-6

如果您正在使用Eclipse,

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

Git

它们应该都在里面。右键单击并“签出”。


1
这个回答如何回答这个问题?-“Git何时刷新远程分支列表?” - Peter Mortensen
2
当我想要在Eclipse中刷新我的本地分支时,我进行了谷歌搜索,然后找到了这里。这篇文章实际上帮助了一些人,因为它得到了一些赞同票。也许我误解了问题。对我来说,Eclipse就是Git(它的界面)。抱歉冒犯了大家! - markthegrea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接