Using git branch --all
shows all remote and local branches. When does Git refresh this list?
On pull/push? And how do I refresh it using Git Bash?
Using git branch --all
shows all remote and local branches. When does Git refresh this list?
On pull/push? And how do I refresh it using Git Bash?
To update the local list of remote branches:
git remote update origin --prune
To show all local and remote branches that (local) Git knows about:
git branch -a
git remote update origin --prune
is what I was looking for thx –
Grison git remote update
, and the accepted answer, which uses git fetch
, see here –
Lucchesi git fetch
did not remove my local cache of remote branches. Only --prune
was able to clean it all up. –
Navel git config remote.origin.prune true
–
Hackney git remote prune origin
has the same effect and you type less. –
Rauscher remote prune
only cleans up dead branches list, it does not get new branches added to remote –
Lina git remote update origin --prune
have to be run manually? It should be clever enough to do this by itself if you have, for instance, checked out master from the server and there's no other branches (because they just got merged). –
Pecan git remote update upstream --prune
–
Mendive git fetch -p && for branch in
git branch -vv | grep ': gone]' | awk '{print $1}'; do git branch -D $branch; done
–
Exhilarative The OP did not ask for cleanup for all remotes, rather for all branches of default remote.
So git fetch --prune
is what should be used.
Setting git config remote.origin.prune true
makes --prune
automatic. In that case just git fetch
will also prune stale remote branches from the local copy. See also Automatic prune with Git fetch or pull.
Note that this does not clean local branches that are no longer tracking a remote branch. See How to prune local tracking branches that do not exist on remote anymore for that.
git fetch -p
–
Precious I believe that if you run git branch --all
from Bash that the list of remote and local branches you see will reflect what your local Git "knows" about at the time you run the command. Because your Git is always up to date with regard to the local branches in your system, the list of local branches will always be accurate.
However, for remote branches this need not be the case. Your local Git only knows about remote branches which it has seen in the last fetch (or pull). So it is possible that you might run git branch --all
and not see a new remote branch which appeared after the last time you fetched or pulled.
To ensure that your local and remote branch list be up to date you can do a git fetch
before running git branch --all
.
For further information, the "remote" branches which appear when you run git branch --all
are not really remote at all; they are actually local. For example, suppose there be a branch on the remote called feature
which you have pulled at least once into your local Git. You will see origin/feature
listed as a branch when you run git branch --all
. But this branch is actually a local Git branch. When you do git fetch origin
, this tracking branch gets updated with any new changes from the remote. This is why your local state can get stale, because there may be new remote branches, or your tracking branches can become stale.
git fetch
did it. –
Obvolute git fetch
doesn't work for me, need add --prune
. Btw, I'm not downvoter ;) –
Difficult git fetch
doesn't remove deleted remote branches. That's probably why some people downvoted –
Tatum Use git fetch
to fetch all latest created branches.
git fetch
did not change anything for me with git 2.17.1. Which version and options have you been using? –
Opalopalesce --prune
or git config remote.NAME.prune true
for this to solve OP question –
Lina I use
git fetch --all --prune --tags --prune-tags --progress
and add this to my run commands file (.zshrc or .bashrc) so I can quickly type gitf
to trigger this command:
alias gitf='git fetch --all --prune --tags --prune-tags --progress'
© 2022 - 2024 — McMap. All rights reserved.
git ls-remote
might be interesting here. – Gynoeciumgit fetch
beforegit branch --all
– Demagoguerygit pull --all --prune
does the trick for me – Web