Kedua perintah memiliki efek yang sama ( terima kasih atas jawaban Robert Siemer karena menunjukkannya ).
Perbedaan praktis muncul ketika menggunakan cabang lokal yang bernama berbeda :
git checkout -b mybranch origin/abranchakan membuat mybranchdan melacakorigin/abranch
git checkout --track origin/abranchhanya akan membuat ' abranch', bukan cabang dengan nama yang berbeda.
(Yaitu, seperti dikomentari oleh Sebastian Graf , jika cabang lokal belum ada.
Jika ya, Anda perlu git checkout -B abranch origin/abranch)
Catatan: dengan Git 2.23 (Q3 2019), itu akan menggunakan perintah barugit switch :
git switch -c <branch> --track <remote>/<branch>
Jika cabang ada di beberapa jarak jauh dan salah satunya dinamai oleh checkout.defaultRemotevariabel konfigurasi, kami akan menggunakannya untuk tujuan disambiguasi, bahkan jika <branch>tidak unik di semua jarak jauh.
Setel ke eg checkout.defaultRemote=originuntuk selalu checkout cabang jarak jauh dari sana jika <branch>ambigu tetapi ada pada remote 'asal'.
Di sini, ' -c' adalah yang baru ' -b'.
Pertama, beberapa latar belakang: Pelacakan berarti bahwa cabang lokal memiliki hulu yang disetel ke cabang jarak jauh:
# git config branch.<branch-name>.remote origin
# git config branch.<branch-name>.merge refs/heads/branch
git checkout -b branch origin/branch akan:
- buat / reset
branchke titik yang dirujuk oleh origin/branch.
- buat cabang
branch(dengan git branch) dan lacak cabang pelacakan jarak jauh origin/branch.
Ketika cabang lokal dimulai dari cabang pelacakan jarak jauh, Git mengatur cabang (khususnya entri konfigurasi branch.<name>.remotedan branch.<name>.merge) sehingga git pullakan bergabung dengan tepat dari cabang pelacakan jarak jauh.
Perilaku ini dapat diubah melalui branch.autosetupmergeflag konfigurasi global . Pengaturan yang dapat diganti dengan menggunakan --trackdan --no-trackpilihan, dan diubah kemudian menggunakan cabang git --set-upstream-to.
Dan git checkout --track origin/branchakan melakukan hal yang sama seperti git branch --set-upstream-to):
# or, since 1.7.0
git branch --set-upstream upstream/branch branch
# or, since 1.8.0 (October 2012)
git branch --set-upstream-to upstream/branch branch
# the short version remains the same:
git branch -u upstream/branch branch
Ini juga akan mengatur hulu untuk ' branch'.
(Catatan: git1.8.0 akan usang git branch --set-upstreamdan menggantinya dengan git branch -u|--set-upstream-to: lihat git1.8.0-rc1 mengumumkan )
Memiliki cabang hulu yang terdaftar untuk cabang lokal akan:
- beri tahu git untuk menunjukkan hubungan antara dua cabang di
git statusdangit branch -v .
- mengarahkan
git pull tanpa argumen untuk menarik dari hulu ketika cabang baru diperiksa .
Lihat " Bagaimana Anda membuat cabang git yang ada melacak cabang jarak jauh? " Untuk informasi lebih lanjut.
git pull, sedangkan beberapa cabang meminta cabang jarak jauh untuk menariknya. Ternyata jika Anda, pertama kali, memeriksa cabang jarak jauh yang dibuat rekan Anda, git melanjutkan dan menambahbranch.<BNAME>.remote=origingitconfig lokal. Yang kemudian memungkinkan Anda untuk mengeluarkangit pull. Namun, jika Anda yang membuat cabanggit checkout -b BNAME, maka git -dari saja- tidak tahu. Jadi, Anda harus menentukan remote-nya.