GitHub'da oluşturulan yeni bir uzak dalı izleme


183

Bir github projesinin uzak ana dalını izleyen yerel bir ana dalım var. Şimdi, bir işbirlikçim aynı projede yeni bir şube oluşturdu ve buna göre aşağıdakileri yapmak istiyorum:

  1. yerel olarak yeni bir şube oluştur
  2. bu yeni dalı yeni oluşturulan uzak dalı izler.

Nasıl düzgün yapmalıyım?


2
git checkout --track -b <yerel şube> <uzaktan> / <paletli şube> de çalışır.
MLister

14
... ya da sadece git checkout -t <remote>/<whatever>. Eğer biten tek bir uzaktan izleme şubesi <whatever>varsa, git checkout <whatever>ne yapmak istediğinizi tahmin edebilir ve gidebilirsiniz .
Mark Longair

Yanıtlar:


251
git fetch
git branch --track branch-name origin/branch-name

İlk komut, yerel depoda uzak dalınızın olmasını sağlar. İkinci komut, uzak dalı izleyen yerel dal oluşturur. Uzak adınızın originve şube adınızın olduğunu varsayar branch-name.

--track seçeneği uzak dallar için varsayılan olarak etkindir ve atlayabilirsiniz.


3
Bunu yaptığımda bir uyarı alıyorum: refname 'branch-name' belirsiz.
Ultrasaurus

19
Bu dal adına sahip yalnızca bir uzak dal varsa, bunu yapabilir git checkout <branchname>ve git otomatik olarak kontrol eder ve bir izleme dalı kurar . Sadece @Mark Longair'in bu yorumda yukarıda söylediklerini tekrarlamak istedim: stackoverflow.com/questions/11262703/… .
Ryan Walls

Uzak şubemin adı remotes/origin/developnedir? Sadece değil origin/developmi? Bunlar aynı mı?
ス レ ッ ク ス

2
Yapmam gereken git fetch --allbaşka türlü yeni şube getirilen olmaz,
mschrimpf

Eclipse'de bu nasıl yapılır? Bunlarla işim bittiğinde cmd, yeni şube tutulmayı tespit eder mi?
Deckard

31

Mevcut bir yerel şubeniz yoksa, bu gerçekten basittir:

git fetch
git checkout <remote-branch-name>

Örneğin, getirirseniz ve adlı yeni bir uzaktan izleme dalı varsa origin/feature/Main_Page, bunu yapın:

git checkout feature/Main_Page

Bu, uzak dal ile aynı adı taşıyan bir uzak dal oluşturur. Aynı dal adına sahip birden fazla uzaktan kumanda varsa, daha az belirsiz olanı kullanabilirsiniz:

git checkout -t <remote>/<remote-branch-name>

Yerel şubeyi zaten oluşturduysanız ve silmek istemiyorsanız, bkz. Mevcut bir Git şubesini uzak bir şubeyi nasıl izlerim? .


1
git checkout 1.5-branch( remotes/upstream/1.5-branchçıkışındadır git branch -a) error: pathspec '1.5-branch' did not match any file(s) known to git.bunun değiştirilmesi git checkout upstream/1.5-branch, HEAD ile sonuçlanır ve hiçbir yerel dal oluşturulmaz. Cevabın bu kısmının yanlış olduğunu düşünüyorum. Bu git 2.4.3 ile
Piotr Dobrogost

İlk komut benim için git 1.9.3'te, farklı uzaktan kumandalarda bile benim için çalışıyor. Bu davranış değişmiş olabilir. İkinci emrinizin sonucu beklediğim şey. -T olmadan, uzaktan kumandadaki belirli sürüme bakmak dışında bir şey yapmak istediğinizi belirtmezsiniz.
kotoole

1
@PiotrDobrogost ile hemfikirim, "Bu aynı ada sahip bir yerel şube oluşturur ..." ifadesinin yanlış olduğuna inanıyorum. Getirme işlemi (bu şekilde çağrıldığında) uzaktan kumandadaki her dal için bir uzaktan izleme dalı oluşturmaktır . Bu, yerel deponuzdaki bir şube anlamına gelir <remote>/<branch>. Bir uzak izleme dalı salt okunur durumdadır ve bu dalın son getirme sırasında uzaktan kumandanın neresinde olduğunu gösterir. Arayan checkoutsen, müstakil BAŞ modunda o dal ref atmaktadır Piotr diyor gibi. Getirilecek uzak dalı belirtmenin, istenmeyen uzaktan izleme dalları oluşturmayı önlediğini unutmayın.
scanny

2
Bir kez daha net olmak gerekirse: Bu komutu kullanmanızı öneririm git checkout feature-branch. İkinizin git checkout origin/feature-branch de belirttiği gibi, yararsız bir müstakil kafa ile sonuçlanacak komutu kullanmanızı önermiyorum.
kotoole

çok daha basit ve noktaya. Cygwin üzerinde git 2.8.3 ile iyi çalışıyor.
Felipe Alvarez

29

Her şeyden önce uzak depoyu getirmelisiniz:

git fetch remoteName

Daha sonra yeni dalı oluşturabilir ve istediğiniz uzak dalı izlemek için ayarlayabilirsiniz:

git checkout -b newLocalBranch remoteName/remoteBranch

Belirtilen maksimum değer olarak "git checkout -b" yerine "git branch --track" kullanabilirsiniz.

git branch --track newLocalBranch remoteName/remoteBranch

Bunu yaparsanız checkout -bbir başlangıç noktası olarak uzak bir dal kullanarak, o zaman aslında sonra kullanıma gereksiz --track.

5
Ayrıca, bu yorumda belirtildiği gibi , sadece yaparsanız git checkout <branchname>ve aynı ada sahip bir uzak dal varsa (siz yaptıktan sonra git fetch), o zaman uzak olanı izlemek için yerel dal otomatik olarak ayarlanır.

9

Şube uzak şube olmadığında, yerel şubenizi doğrudan uzaktan kumandaya itebilirsiniz.

git checkout master
git push origin master

veya bir geliştirici şubeniz olduğunda

git checkout dev
git push origin dev

veya uzak dal mevcut olduğunda

git branch dev -t origin/dev

Uzak bir kolu itmek için başka olasılıklar da vardır.


Sonra üçüncü seçeneği alırsınız. Uzak dal mevcut olduğunda, yerel bir dal oluşturabilir ve uzak dalı izleyebilirsiniz :) bu, maksimumdan daha kısa sürümle aynıdır.
René Höhle
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.