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/abranch
akan membuat mybranch
dan melacakorigin/abranch
git checkout --track origin/abranch
hanya 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.defaultRemote
variabel konfigurasi, kami akan menggunakannya untuk tujuan disambiguasi, bahkan jika <branch>
tidak unik di semua jarak jauh.
Setel ke eg checkout.defaultRemote=origin
untuk 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
branch
ke 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>.remote
dan branch.<name>.merge
) sehingga git pull
akan bergabung dengan tepat dari cabang pelacakan jarak jauh.
Perilaku ini dapat diubah melalui branch.autosetupmerge
flag konfigurasi global . Pengaturan yang dapat diganti dengan menggunakan --track
dan --no-track
pilihan, dan diubah kemudian menggunakan cabang git --set-upstream-to
.
Dan git checkout --track origin/branch
akan 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-upstream
dan 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 status
dangit 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=origin
gitconfig 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.