Soru GitHub'da oluşturulan yeni bir uzak şube izleyin


Zaten bir github projesinin uzak master şubesini takip eden bir yerel master şubem var. Şimdi, bir ortak çalışanım aynı projede yeni bir şube oluşturdu ve aşağıdakileri yapmak istiyorum:

  1. yerel olarak yeni bir şube oluşturmak
  2. Bu yeni şube yeni oluşturulan uzak şube parça olun.

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


150
2018-06-29 13:28


Menşei


git checkout --track -b <yerel şube> <uzak> / <izlenen şube> da çalışır. - MLister
... ya da sadece git checkout -t <remote>/<whatever>. Eğer biten tek bir uzaktan izleme dalı varsa <whatever> sadece yapabilirsin git checkout <whatever> ve git ne demek istediğini tahmin ediyor. - Mark Longair
Ayrıca bakınız Var olan bir Git dalını uzak bir dalı nasıl izlersiniz?.


Cevaplar:


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

İlk komut yerel depoda uzak şubeye sahip olduğunuzdan emin olmanızı sağlar. İkinci komut, uzak dalı izleyen yerel şube oluşturur. Uzak adınızın olduğunu varsayar origin ve şube adı branch-name.

--track Uzak şubeler için varsayılan olarak seçenek etkinleştirilmiştir ve bunu atlayabilirsiniz.


206
2018-06-29 13:33



Bunu yaptığımda bir uyarı alırım: refname 'şube ismi' belirsizdir. - Ultrasaurus
Bu şube ismine sahip tek bir uzak şube varsa, sadece git checkout <branchname> ve git otomatik olarak kontrol edecek ve bir izleme dalı kuracaktır. Sadece bu yorumda @Mark Longair'in söylediklerini yinelemek istedim: stackoverflow.com/questions/11262703/.... - Ryan Walls
Uzak şubemin adı remotes/origin/develop? Olması gerekmiyor sadece origin/develop? Bunlar aynı mı? - アレックス


Her şeyden önce uzak depoyu getirmelisiniz:

git fetch remoteName

Daha yeni şubeyi oluşturabilir ve istediğiniz uzak şubeyi izlemek için ayarlayabilirsiniz.

git checkout -b newLocalBranch remoteName/remoteBranch

Ayrıca, belirtilen en çok "git checkout -b" yerine "git branch --track" değerini de kullanabilirsiniz.

git branch --track newLocalBranch remoteName/remoteBranch

27
2017-07-12 06:17



Yaparsan checkout -b Uzak bir şubeyi başlangıç ​​noktası olarak kullanmak, daha sonra kullanmak için gereksizdir. --track.
Ayrıca, belirtildiği gibi bu yorumeğer yaparsan git checkout <branchname>ve aynı adı taşıyan bir uzak şube var. git fetch), daha sonra yerel şube uzak olanı izlemek için otomatik olarak ayarlanacaktır.


Mevcut bir yerel şubeye sahip değilseniz, aşağıdaki gibi basittir:

git fetch
git checkout <remote-branch-name>

Örneğin, eğer getiriyorsanız ve yeni bir uzaktan izleme dalı varsa origin/feature/Main_Page, sadece şunu yap:

git checkout feature/Main_Page

Bu, uzak şubeyi izleyerek uzak şube ile aynı ada sahip yerel bir şube oluşturur. Aynı şube adıyla birden fazla uzaktan kumanda varsa, daha az belirsiz kullanabilirsiniz:

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

Yerel şubeyi zaten yapmış ve silmek istemiyorsanız, bkz. Var olan bir Git dalını uzak bir dalı nasıl izlersiniz?.


23
2018-03-20 23:07



git checkout 1.5-branch (remotes/upstream/1.5-branch çıktığında git branch -a) sonuç error: pathspec '1.5-branch' did not match any file(s) known to git. Bunu değiştirmek için git checkout upstream/1.5-branch Müstakil HEAD ile sonuçlanır ve yerel şube oluşturulmaz. Bence cevabın bu kısmı sadece yanlıştır. Bu git 2.4.3 ile - Piotr Dobrogost
Farklı komutlar için bile ilk komut git 1.9.3'te benim için çalışıyor. Bu davranış değişmiş olabilir. İkinci emrinizin sonucu bekleyeceğim şey. -T olmadan, uzaktan kumandadaki o versiyona bakmaktan başka bir şey yapmak istediğinizi belirtmiyorsunuz. - kotoole
@PiotrDobrogost ile aynı fikirdeyim, "Bu, aynı isimle bir yerel şube yaratır ..." ifadesinin yanlış olduğuna inanıyorum. Ne getiriyor irade yapmak (bu şekilde denir) bir uzaktan izleme dalı uzaktan kumandadaki her şube için. Bu yerel repo adında bir şube anlamına geliyor <remote>/<branch>. Bir uzak izleme dalı salt okunur olup, o şubenin son getirme sırasında uzak olduğu yeri gösterir. çağrı checkout Bu dalı ref, Piotr'in dediği gibi sizi bağımsız HEAD moduna sokar. Alınacak uzak şubeyi belirtmenin istenmeyen uzaktan izleme dalları oluşturulmasını önlediğini unutmayın. - scanny
Bir kez daha açık olmak gerekirse: Komutu kullanmanızı öneriyorum git checkout feature-branch. Komutu kullanmayi önermiyorum git checkout origin/feature-branch   İkinizin de işaret ettiği gibi, yardımcı olmayan müstakil bir kafayla sonuçlanacak. - kotoole
çok daha basit ve noktaya. Cygwin üzerinde git 2.8.3 ile iyi çalışıyor. - Felipe Alvarez


Şube uzak şube olmadığında, yerel şubenizi doğrudan uzaktan kumandaya götürebilirsiniz.

git checkout master
git push origin master

ya da bir dev şubeniz olduğunda

git checkout dev
git push origin dev

veya uzak şube olduğunda

git branch dev -t origin/dev

Uzak bir dalı zorlamak için başka pozibilitler var.


5
2018-06-29 13:34



Teşekkürler. Ama sanırım bir 'uzak şubeye basmak istiyorum'. - MLister
Sonra üçüncü seçeneği de alırsınız. Uzak şube olduğunda, yerel bir şube oluşturabilir ve uzak dalı izleyebilirsin. - Stony