Kloonasin Git-arkiston, joka sisältää noin viisi haaraa. Kun kuitenkin teen git branch
, näen vain yhden niistä:
$ git branch
* master
Tiedän, että voin tehdä git branch -a
nähdäkseni kaikki haarat, mutta miten voisin vetää kaikki haarat paikallisesti niin, että kun teen git branch
, se näyttää seuraavaa?
$ git branch
* master
* staging
* etc...
Voit noutaa kaikki haarat kaikista kaukosäätimistä näin:
git fetch --all
Se'on periaatteessa power move.
fetch
päivittää etähaarojen paikalliset kopiot, joten tämä on aina turvallista paikallisille haaroille MUTTA:
Jos haluat päivittää paikallisia haarojasi, sinun täytyy silti vetää jokainen haara.
fetch
ei luo paikallisia haaroja (jotka seurantavat etähaaroja), sinun on tehtävä tämä manuaalisesti. Jos haluat listata kaikki etähaarat:
git branch -a
Jos haluat päivittää paikallisia haaroja, jotka seuraavat etähaaroja:
git pull --all
Tämä voi kuitenkin olla vielä riittämätöntä. Se toimii vain paikallisissa haaroissa, jotka seuraavat etähaaroja. Jos haluat seurata kaikkia etähaaroja, suorita tämä oneliner ENNEN git pull --all
:
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
(Näyttää siltä, että pull noutaa kaikki haarat kaikista etäyhteyksistä, mutta noutaa aina ensin varmuuden vuoksi.)
Suorita ensimmäinen komento vain, jos palvelimella on etähaaroja, joita paikalliset haarat eivät seuraa.
P.S. AFAIK git fetch --all
ja git remote update
vastaavat toisiaan.
Kamil Szot's kommentti, jota ihmiset ovat pitäneet hyödyllisenä.
Minun oli käytettävä:
for remote in
git branch -r
; do git branch --track ${remote#origin/} $remote; donekoska koodisi loi paikallisia haaroja nimellä
origin/branchname
jaorigin/branchname
. sain "refname 'origin/branchname' on moniselitteinen aina kun minä viittasin siihen.
Etähaarojen luetteloiminen:
git branch -r
Voit tarkistaa ne paikallisiksi haaroiksi seuraavalla komennolla:
git checkout -b LocalName origin/remotebranchname
seuraavasti: git checkout -b LocalName origin/remotebranchname
$ git remote update
$ git pull --all
Tämä olettaa, että kaikkia haaroja seurataan.
Jos näin ei ole'voit ampua tämän Bashissa:
for remote in `git branch -r `; do git branch --track $remote; done
Suorita sitten komento.