Sebagian besar jawaban di sini lebih rumit dari penguraian output git branch -r
. Anda dapat menggunakan for
loop berikut untuk membuat cabang pelacakan terhadap semua cabang di remote seperti itu.
Contoh
Katakanlah saya punya cabang terpencil ini.
$ git branch -r
origin/HEAD -> origin/master
origin/development
origin/integration
origin/master
origin/production
origin/staging
Konfirmasikan bahwa kami tidak melacak apa pun selain master, secara lokal:
$ git branch -l # or using just git branch
* master
Anda dapat menggunakan liner satu ini untuk membuat cabang pelacakan:
$ 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.
Sekarang konfirmasikan:
$ git branch
development
integration
* master
production
staging
Untuk menghapusnya:
$ 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).
Jika Anda menggunakan -vv
sakelar ini, git branch
Anda dapat mengonfirmasi:
$ 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 ....
Kerusakan untuk loop
Loop pada dasarnya memanggil perintah git branch -r
, memfilter setiap HEAD atau cabang master di output menggunakan grep -vE "HEAD|master"
. Untuk mendapatkan nama hanya cabang dikurangi origin/
substring kami menggunakan manipulasi string Bash ${var#stringtoremove}
. Ini akan menghapus string, "stringtoremove" dari variabel $var
. Dalam kasus kami, kami menghapus string origin/
dari variabel $i
.
CATATAN: Atau Anda dapat menggunakan git checkout --track ...
untuk melakukan ini juga:
$ for i in $(git branch -r | grep -vE "HEAD|master" | sed 's/^[ ]\+//'); do
git checkout --track $i; done
Tapi saya tidak terlalu peduli dengan metode ini, karena ini akan mengalihkan Anda di antara cabang-cabang saat melakukan checkout. Ketika selesai itu akan meninggalkan Anda di cabang terakhir yang dibuatnya.
Referensi
git checkout --track origin/branchname