Yaklaşık beş dal içeren bir Git deposunu klonladım. Ancak, git branch
yaptığımda bunlardan yalnızca birini görüyorum:
$ git branch
* master
Tüm** dalları görmek için git branch -a
yapabileceğimi biliyorum, ancak git branch
yaptığımda aşağıdakileri göstermesi için tüm dalları yerel olarak nasıl çekebilirim?
$ git branch
* master
* staging
* etc...
Tüm şubeleri tüm uzaktan kumandalardan bu şekilde getirebilirsiniz:
git fetch --all
Bu temelde bir güç hareketi.
fetch` uzak şubelerin yerel kopyalarını günceller, bu nedenle bu yerel şubeleriniz için her zaman güvenlidir BUT:
`fetch' yerel dalları güncellemez (uzak dalları takip eder); yerel dallarınızı güncellemek istiyorsanız, yine de her dalı çekmeniz gerekir.
fetch
yerel dalları (uzak dalları takip eden) oluşturmaz, bunu manuel olarak yapmanız gerekir. Eğer tüm uzak şubeleri listelemek istiyorsanız:
git branch -a
Uzak şubeleri takip eden yerel şubeleri güncellemek için:
git pull --all
Ancak bu yine de yetersiz olabilir. Yalnızca uzak şubeleri izleyen yerel şubeleriniz için işe yarayacaktır. Tüm uzak şubeleri izlemek için bu oneliner'ı ÖNCE git pull --all
çalıştırın:
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
(Görünüşe göre pull tüm şubeleri tüm uzak noktalardan getiriyor, ancak emin olmak için her zaman önce getiriyorum).
İlk komutu yalnızca sunucuda yerel şubeleriniz tarafından takip edilmeyen uzak şubeler varsa çalıştırın.
Not: AFAIK git fetch --all
ve git remote update
eşdeğerdir.
Kamil Szot'un yorum, insanların yararlı bulduğu.
Kullanmak zorundaydım:
for remote in
git branch -r
; do git branch --track ${remote#origin/} $remote; doneçünkü kodunuz
origin/branchname
adında yerel şubeler oluşturdu ve "refname 'origin/branchname' alıyordum. ona atıfta bulundu.
$ git remote update
$ git pull --all
Bu, tüm şubelerin izlendiğini varsayar.
Eğer değillerse bunu Bash'te ateşleyebilirsiniz:
for remote in `git branch -r `; do git branch --track $remote; done
Ardından komutu çalıştırın.