Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Git pull all remote branches
#!/usr/bin/env bash
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
@will-tam
Copy link

will-tam commented Apr 13, 2020

Hello and thanks everyone for this tips

@maskym
Copy link

maskym commented Jul 21, 2020

Thank you so much ElfSundae, I've looked for this answer so much, only to find fetch --all ...

@HoffiMuc
Copy link

HoffiMuc commented Nov 25, 2020

current=$(git branch --show-current) ; for brname in $(git branch -r | grep origin | grep -v master | grep -v HEAD | awk '{gsub(/^[^\/]+//,"",$1); print $1}'); do echo git checkout $brname ; git checkout $brname ; echo git pull ; git pull ; done ; echo git checkout $current ;git checkout $current

@andreasslc
Copy link

andreasslc commented Apr 24, 2021

for abranch in $(git branch -a | grep -v HEAD | grep remotes | sed "s/remotes\/origin\///g"); do git checkout $abranch ; done
This statement will checkout all branches when executed in local repo location. I use it frequently.

@leoplaw
Copy link

leoplaw commented May 21, 2021

Thank you for this! It was very helpful.

@skmn1
Copy link

skmn1 commented Oct 5, 2021

thank you

@m3asmi
Copy link

m3asmi commented Mar 14, 2022

I use this:
git branch -r | grep -v '\->' | sed -e 's/^origin\///' | while read remote; do echo "parsing branch $remote"; git checkout "$remote"; git reset --hard $remote ; git pull; echo "$remote done";done

@isho777
Copy link

isho777 commented Apr 12, 2022

I think git is still being developed. Its like another programming language on its own. I'd like all GUI usage with drag and drop in the future

@Wandalen
Copy link

Wandalen commented Jun 1, 2022

Hi,
According to the doc on pull, the --all option only affects the fetch part of the pull command.
So isn't it kind of useless to do a fetch --all before a pull --all ?
Also I have doubts that git pull --all does indeed pull all remote branch and not just the current one.
What do you think ?

Confirmed. That is useless. Any working alternative?

@jcwren
Copy link

jcwren commented Jun 29, 2022

git branch -r | grep -v '->' | tr -d 'origin/' | while read remote; do echo "parsing branch $remote"; git checkout "$remote"; git reset --hard $remote ; git pull; echo "$remote done";done

Your tr command is incorrect, as it deletes characters in the list. You want sed.

$ echo "origin/docubranch" | tr -d 'origin/'
emtesdcubach
$ echo "origin/docubranch" | sed -e 's/^origin\///'
docubranch

@m3asmi
Copy link

m3asmi commented Jul 13, 2022

@jcwren thanks, I fixed it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment