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
@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