使用git branch --all
命令可以显示所有的远程和本地分支。Git是在何时刷新此列表呢?
在执行pull/push操作时会刷新吗?如何使用Git Bash手动刷新该列表呢?
使用git branch --all
命令可以显示所有的远程和本地分支。Git是在何时刷新此列表呢?
在执行pull/push操作时会刷新吗?如何使用Git Bash手动刷新该列表呢?
更新本地远程分支列表:
git remote update origin --prune
展示所有本地和远程分支,这些分支都是 Git 已经知晓的。
git branch -a
git remote update origin --prune
是我正在寻找的。 - WonderLandgit remote update
和被采纳的答案中使用了git fetch
之间的区别,请参见这里的回答:https://dev59.com/j3I-5IYBdhLWcg3wbXxN#1856504。 - Nate Andersongit fetch
没有删除我的本地缓存的远程分支。只有使用 --prune
才能完全清除它们。 - Felipe Alvarezgit config remote.origin.prune true
命令让 Git 自动执行此操作。 - Slategit remote prune origin
拥有相同的效果,而且你需要输入的字符更少。 - DvinOP并没有要求清除所有远程分支,而是要清除默认远程分支的所有分支。
因此,应该使用 git fetch --prune
。
设置 git config remote.origin.prune true
会使 --prune
自动生效。在这种情况下,只需执行 git fetch
即可从本地副本中删除陈旧的远程分支。另请参见 自动修剪 Git fetch 或 pull。
请注意,这不会清理不再跟踪远程分支的本地分支。有关详细信息,请参见 如何删除不再存在于远程的本地跟踪分支。
git fetch -p
。 - Michael Warner我认为,如果你在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
命令时,此跟踪分支将更新为来自远程存储库的任何新更改。这就是为什么你的本地状态可能会过期,因为可能有新的远程分支,或者你的跟踪分支可能已经过期。
git fetch
完成了它的任务。 - BendEggit fetch
命令不会删除远程已经被删除的分支,这可能是一些人给出反对票的原因。 - Jérôme MEVELgit fetch
命令获取所有最新创建的分支。--prune
或者 git config remote.NAME.prune true
来解决 OP 的问题。 - Olivergit fetch --all --prune --tags --prune-tags --progress
alias gitf='git fetch --all --prune --tags --prune-tags --progress'
git ls-remote
在这里可能很有用。 - jthillgit branch --all
命令之前,别忘了先使用git fetch
。 - Lukasgit pull --all --prune
对我来说很管用。 - Pykler