İ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/abranch
yaratacak mybranch
ve takip edecekorigin/abranch
git checkout --track origin/abranch
abranch
farklı 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.defaultRemote
yapı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:
branch
tarafı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>.remote
ve branch.<name>.merge
yapılandırma kayıt) böylece git pull
uygun uzaktan izleme daldan birleştirilecek.
Bu davranış, genel branch.autosetupmerge
yapılandırma bayrağıyla değiştirilebilir . Bu ayar --track
ve --no-track
seç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/branch
aynı ş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-upstream
ve 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 status
vegit 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 pull
ederken, bazı şubeler uzak bir dalın çekilmesini isteyecekti. İlk kez,branch.<BNAME>.remote=origin
eş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 BNAME
git -of tabii ki- bilmiyor. Bu yüzden uzaktan kumandasını belirtmelisiniz.