İki komut da aynı etkiye sahiptir ( Robert Siemer'in işaret ettiği cevabı sayesinde ).
Pratik fark, farklı adlı yerel bir şube kullanıldığında ortaya çıkar :
git checkout -b mybranch origin/abranchyaratacak mybranchve takip edecekorigin/abranch
git checkout --track origin/abranchabranchfarklı bir ada sahip bir şube değil , sadece ' ' oluşturur .
(Yani, yorumladı olarak tarafından Sebastian Graf yerel şube eğer, değil zaten var.
Öyle olsaydı, sen gerekir git checkout -B abranch origin/abranch)
Not: Git 2.23 (Q3 2019) ile yeni komut kullanılırgit switch :
git switch -c <branch> --track <remote>/<branch>
Şube birden çok uzaktan kumandada bulunuyorsa ve bunlardan biri checkout.defaultRemoteyapılandırma değişkeni tarafından adlandırılmışsa , <branch>tüm uzaktan kumandalar arasında benzersiz olmasa bile, bunu ayırma amacıyla kullanacağız . Belirsiz ancak 'başlangıç' uzaktan kumandasında varsa , uzak dalları her zaman oradan kontrol
etmek için ayarlayın .checkout.defaultRemote=origin<branch>
İşte, ' -c' yeni ' -b'.
İlk olarak, bir arka plan: İzleme , yerel bir şubenin yukarı akışını uzak bir şubeye ayarladığı anlamına gelir:
# git config branch.<branch-name>.remote origin
# git config branch.<branch-name>.merge refs/heads/branch
git checkout -b branch origin/branch niyet:
branchtarafından başvurulan noktaya oluşturma / sıfırlama origin/branch.
- şube oluşturma
branch(ile git branch) ve uzaktan izleme kolunu izleme origin/branch.
Yerel bir dal uzaktan izleme daldan başlatıldığında, Git şube (özellikle kurar branch.<name>.remoteve branch.<name>.mergeyapılandırma kayıt) böylece git pulluygun uzaktan izleme daldan birleştirilecek.
Bu davranış, genel branch.autosetupmergeyapılandırma bayrağıyla değiştirilebilir . Bu ayar --trackve --no-trackseçenekleri kullanılarak geçersiz kılınabilir ve daha sonra git dalı kullanılarak değiştirilebilir --set-upstream-to.
Ve git checkout --track origin/branchaynı şeyi yapacaktır 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
Ayrıca, ' branch' için akış yukarı da yerleştirir .
(Not: git1.8.0 kullanımdan kaldırılacak git branch --set-upstreamve onunla değiştirilecektir git branch -u|--set-upstream-to: bkz. Git1.8.0-rc1 anonsu )
Yerel bir şube için kayıtlı bir yukarı şubeye sahip olmak:
- için git söyle içinde iki kola arasındaki ilişkiyi gösterir
git statusvegit branch -v .
- yeni dal teslim alındığında yukarı akıştan alınacak
git pull argüman olmadan yönlendirir .
Daha fazla bilgi için bkz. " Mevcut bir git dalını uzak bir dal izini nasıl yaparsınız? "
git pullederken, bazı şubeler uzak bir dalın çekilmesini isteyecekti. İlk kez,branch.<BNAME>.remote=origineşinizin oluşturduğu uzak bir dalı kontrol ederseniz, git'in devam edip yerel gitconfig'e eklediği ortaya çıkıyor. Bu daha sonra yayınlamanızı sağlargit pull. Ancak, dalı oluşturan sizseniz,git checkout -b BNAMEgit -of tabii ki- bilmiyor. Bu yüzden uzaktan kumandasını belirtmelisiniz.