Buradaki cevapların çoğu, çıktısının ayrıştırılmasını karmaşıklaştırmaktadır git branch -r
. for
Uzaktan kumandadaki tüm kollara karşı izleme dalları oluşturmak için aşağıdaki döngüyü kullanabilirsiniz .
Misal
Diyelim ki bu uzak şubelerim var.
$ git branch -r
origin/HEAD -> origin/master
origin/development
origin/integration
origin/master
origin/production
origin/staging
Yerel olarak zaten master'dan başka bir şey izlemediğimizi doğrulayın:
$ git branch -l # or using just git branch
* master
İzleme dallarını oluşturmak için bu tek astarı kullanabilirsiniz:
$ for i in $(git branch -r | grep -vE "HEAD|master"); do
git branch --track ${i#*/} $i; done
Branch development set up to track remote branch development from origin.
Branch integration set up to track remote branch integration from origin.
Branch production set up to track remote branch production from origin.
Branch staging set up to track remote branch staging from origin.
Şimdi onaylayın:
$ git branch
development
integration
* master
production
staging
Bunları silmek için:
$ git br -D production development integration staging
Deleted branch production (was xxxxx).
Deleted branch development (was xxxxx).
Deleted branch integration (was xxxxx).
Deleted branch staging (was xxxxx).
-vv
Anahtarı kullanırsanız, git branch
şunları onaylayabilirsiniz:
$ git br -vv
development xxxxx [origin/development] commit log msg ....
integration xxxxx [origin/integration] commit log msg ....
* master xxxxx [origin/master] commit log msg ....
production xxxxx [origin/production] commit log msg ....
staging xxxxx [origin/staging] commit log msg ....
For döngüsünün dökümü
Döngü temel olarak komutu git branch -r
kullanarak çıktıdaki HEAD veya ana dalları filtreleyerek kullanır grep -vE "HEAD|master"
. Sadece dalların isimlerini origin/
ekleyerek alt dize almak için Bash'in dize manipülasyonunu kullanıyoruz ${var#stringtoremove}
. Bu, "stringtoremove" dizesini değişkenten kaldıracaktır $var
. Bizim durumumuzda dizeyi origin/
değişkenten kaldırıyoruz $i
.
NOT: Alternatif git checkout --track ...
olarak bunu yapmak için de kullanabilirsiniz :
$ for i in $(git branch -r | grep -vE "HEAD|master" | sed 's/^[ ]\+//'); do
git checkout --track $i; done
Ama özellikle bu yöntemi önemsemiyorum, çünkü bir ödeme yaparken sizi şubeler arasında değiştiriyor. İşiniz bittiğinde sizi oluşturduğu son dalda bırakacaktır.
Referanslar
git checkout --track origin/branchname