使用 git branch --all
显示所有 remote 和 local 分支。 Git 什么时候刷新这个列表?
拉/推?以及如何使用 Git Bash 刷新它?
git ls-remote
在这里可能很有趣。
git branch --all
之前使用 git fetch
git pull --all --prune
对我有用
要更新远程分支的本地列表:
git remote update origin --prune
要显示(本地)Git 知道的所有本地和远程分支:
git branch -a
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
我相信,如果您从 Bash 运行 git branch --all
,那么您看到的远程和本地分支列表将反映您本地 Git 在您运行命令时“知道”的内容。由于您的 Git 始终与系统中的本地分支保持同步,因此本地分支列表将始终准确无误。
但是,对于远程分支,情况并非如此。您的本地 Git 只知道它在上次提取(或拉取)中看到的远程分支。因此,您可能会运行 git branch --all
而没有看到一个新的远程分支,该分支出现在您最后一次获取或拉取之后。
为确保您的本地 和 远程分支列表是最新的,您可以执行 git fetch
before 运行 git branch --all
。
有关更多信息,运行 git branch --all
时出现的“远程”分支根本不是真正的远程;他们实际上是本地的。例如,假设远程上有一个名为 feature
的分支,您至少将其拉入本地 Git 一次。当您运行 git branch --all
时,您将看到 origin/feature
作为一个分支列出。但这个分支实际上是一个本地 Git 分支。当您执行 git fetch origin
时,此跟踪分支将使用来自远程的任何新更改进行更新。这就是为什么您的本地状态会变得陈旧的原因,因为可能有新的远程分支,或者您的跟踪分支可能会变得陈旧。
git fetch
做到了。
git fetch
对我不起作用,需要添加 --prune
。顺便说一句,我不是downvoter ;)
git fetch
不会删除已删除的远程分支。这可能就是为什么有些人不赞成
使用 git fetch
获取所有最新创建的分支。
git fetch
git 2.17.1 对我没有任何改变。您一直在使用哪个版本和选项?
--prune
或 git config remote.NAME.prune true
来解决 OP 问题
如果您使用的是 Eclipse,
打开“Git 存储库”找到你的存储库。打开“分支”,然后打开“远程跟踪”。
https://i.stack.imgur.com/qai7r.png
他们都应该在里面。右键单击并“结帐”。
不定期副业成功案例分享
git remote update origin --prune
是我一直在寻找的东西git remote update
的此答案与使用git fetch
的已接受答案之间的区别,see heregit fetch
没有删除我的远程分支的本地缓存。只有--prune
能够将其全部清理干净。git config remote.origin.prune true
让 git 自动执行此操作git remote prune origin
具有相同的效果,并且您键入的内容更少。