İzleme dalı nedir?


173

Birisi git için geçerli olan bir "izleme dalı" nı açıklayabilir mi?

Git-scm.com tanımı :

Git'teki bir 'izleme dalı', uzak bir dala bağlı yerel bir daldır. Bu dalı itip çektiğinizde, otomatik olarak bağlı olduğu uzak dalı da iter ve çeker.

Aynı yukarı akış kolundan her zaman yeni dala çekiyorsanız ve "git pull" işlevini açıkça kullanmak istemiyorsanız bunu kullanın.

Ne yazık ki, git konusunda yeni olmak ve SVN'den gelmek, bu tanımın benim için hiçbir anlamı yok.

"Gitmek için Pragmatik Rehber " i okuyorum (bu arada harika bir kitap) ve izleme dallarının iyi bir şey olduğunu ve ilk uzaktan kumandanızı (bu durumda başlangıç ​​noktası) oluşturduktan sonra, ana dalınızı bir izleme dalı olarak ayarlayın, ancak maalesef bir izleme dalının neden iyi bir şey olduğunu veya ana dalınızı başlangıç ​​deponuzun bir izleme dalı olacak şekilde ayarlayarak elde ettiğiniz faydaları kapsamaz .

Birisi beni aydınlatabilir mi (İngilizce)?


6
Bir terminoloji notu: Git'teki parça sözcüğü çok aşırı yüklenmiş. Bazı dosyalar izlenir , bazıları izlenmez ; bazı şube adlarına uzaktan izleme dalı denir ; ve --trackbu uzaktan izleme dallarından birinin akış yukarı olarak ayarlanmış bir (yerel) dal oluşturma seçeneğini kullanabilirsiniz . Terminoloji 2006 ve 2019 arasında biraz gelişti, bu nedenle etti farklı insanlar olabilir bu kelimelerin her biri tarafından bazen ortalama farklı bir şey.
torek

Şahsen uzaktan izleme dalları yerine uzaktan izleme adları ifadesini kullanmanızı öneririm , kısmen kelime dalı da aşırı yüklenmiş. Uzaktan izleme adları şuna benzeyen adlardır : deponuzdadırlar, ancak Git'in adresindeki diğer bazı Git deposunda görüldüğü gibi şube adlarını hatırlama yoludur . Sonra kelime kullanırsanız kaynak tarafı senin söylemek daha modern bir terimdir, etti onun olarak ayarlanmış memba , tüm bunları terminoloji karışıklığı önleyebilirsiniz. origin/masteroriginmasterorigin/master
torek

Yanıtlar:


141

ProGit kitabı vardır çok iyi bir açıklama :

Takip Şubeleri

Uzak bir daldan yerel bir dalı denetlemek, otomatik olarak izleme dalı olarak adlandırılan dalı oluşturur. İzleme şubeleri, uzak bir şubeyle doğrudan ilişkisi olan yerel şubelerdir. Bir izleme şubesindeyseniz ve yazıngit push türündeyseniz, Git otomatik olarak hangi sunucuya ve şubeye gönderileceğini bilir. Ayrıca, git pullbu dallardan birinde çalışırken tüm uzak başvuruları alır ve otomatik olarak ilgili uzak dalda birleştirilir.

Bir havuzu klonladığınızda, genellikle otomatik olarak başlangıç ​​noktasını / yöneticisi izleyen bir ana dal oluşturur. Bu yüzden git pushve git pullbaşka argüman olmadan kutunun dışında çalışın. Bununla birlikte, isterseniz kökeni takip etmeyen ve ana dalı izlemeyen diğer izleme dallarını ayarlayabilirsiniz. Basit durum, az önce gördüğünüz, koştuğunuz örnektir git checkout -b [branch] [remotename]/[branch]. Git 1.6.2 veya daha yeni bir sürüme sahipseniz, --trackkısayolu da kullanabilirsiniz :

$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"

Uzak daldan farklı bir ada sahip bir yerel dal ayarlamak için, farklı bir yerel dal adına sahip ilk sürümü kolayca kullanabilirsiniz:

$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"

Artık yerel şubeniz sfotomatik olarak içeri ve dışarı doğru itilecek origin/serverfix.

BONUS: ekstra git statusbilgi

Bir izleme şubesiyle, izleme şubenizin git statusne kadar gerisinde olduğunuzu söyler - değişikliklerinizi henüz itmediğinizi hatırlatmak için faydalıdır! Şöyle görünüyor:

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

veya

$ git status
On branch dev
Your branch and 'origin/dev' have diverged,
and have 3 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)


21
Bunu temizlemek istedim: "Uzak bir şubeden yerel bir şubeye göz atmak, otomatik olarak izleme şubesi olarak adlandırılan şeyi oluşturur." Bu yanıltıcı. --Track seçeneği olmadan oluşturduğunuz dallar izlenmez.
JohnO

@JohnO, bunu Pro Git adamıyla almak isteyebilir. Tüm kitap, büyük düzenleme işbirliği IIRC'nin bir sonucudur.
Assaf Lavie

2
@ JohnO, şuna göre: sbf5.com/~cduan/technical/git/git-4.shtml - track varsayılan olarak açıktır ve bu nedenle gerekli değildir.
Hank Lin

52

Aşağıda, GIT izleme dalları hakkındaki kişisel öğrenme notlarım var, umarım gelecekteki ziyaretçiler için yararlı olacaktır:

resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin


Takip şubeleri ve "git getirme":

resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin


Notlar için teşekkürler! Mümkünse hepsini paylaşır mısın? Teşekkürler;
Aditya

@Aditya: Bu soru şubeleri takip etmek içindir ve bu konudaki tüm notlarımı gönderdim. Diğer GIT notlarımı gönderebileceğim başka bir alakalı soru bulursam, bunu yapmaktan memnuniyet duyarım.
hagrawal

Teşekkürler! Demek istediğim onları blogunuza veya başka bir şeye yayınlamaktı :). Güzel notlar için tekrar teşekkürler!
Aditya

@Aditya: Ah, anlıyorum. Şimdi ne demek istediğine açıksın. Web sitemde geride kalıyorum, ancak kendim için bir tane oluşturuyorum.
hagrawal

1
mükemmel notlar dostum!
ANewGuyInTown

43

Pro Git kitabından bahsediyor :

İzleme şubeleri, uzak bir şubeyle doğrudan ilişkisi olan yerel şubelerdir

Tam olarak değil. SO " Zor anlaması zorgit-fetch " sorusu şunları içerir:

Böyle bir yerel izleme kolu kavramı yoktur , sadece uzaktan izleme dalları vardır.
Yani origin/masteruzak izleme şube içindir masterde originrepo.

Ama aslında, aşağıdakiler arasında yukarı yönlü bir şube ilişkisi kurduğunuzda :

  • gibi bir yerel şube master
  • ve uzaktan izleme origin/master

Daha sonra yerel bir izleme dalımaster olarak düşünebilirsiniz : Bu , yukarı akış deposunun ana dalını izleyen uzaktan izleme dalını izler . origin/master origin

alternatif metin


Görüntü netleştirmesi: Bilgisayarım menşeinden 2 komisyon öndedir. Twoţte bu iki üstatýn geldiği yer burasý. Resim: progit.org/book/ch3-5.html
idbrii

Doğru bir şekilde mi yorumluyorum: Yerel olarak başlangıç ​​noktası ve yukarı akış için ayarlanmış uzaktan kumandalarım varsa, yerel ana şubem doğrudan ve yukarı yönlü dolaylı olarak başlangıç ​​noktasını izleyecek mi? örneğin: git statushem başlangıç ​​noktası hem de yukarı akış depolarıyla ilgili bir taahhüt izleme mesajı aldığımda ne zaman ? (Kurulum: Birinin repo'sunu yerel olarak klonladım, klonumu GitHub hesabımdaki yeni bir repoya ittim ve sırasıyla github repo ve klonlanmış klon repoma yerel olarak başlangıç ​​ve çıkış uzaktan kumandaları ayarladım).
SherylHohman

3
@SherylHohman No: yerel bir şube "doğrudan" veya "dolaylı" hiçbir şeyi izlemez. Atayacağınız uzaktan izleme dalını izleyecektir. Çatal olması durumunda, en iyi uygulama, ortak dallar (master gibi) için yukarı akış (orijinal repo) ve yeni dallar (PR veya özellik dallarınız) için menşei (uzak çatalınız) takip etmektir: stackoverflow.com/ a / 21847690/6309
VonC

2
@VonC - "Yerel izleme şubeleri gibi bir kavram yok, sadece uzaktan izleme şubeleri." ilginç b / c dalları etrafında böyle bir çelişkili terminoloji var. Bu, sık sık başvurulan web.archive.org/web/20130419172453/http://www.gitguys.com/… "izleme dalları" ile "uzaktan izleme dalları" arasında ayrım yapar. Orijin / master'a "uzaktan izleme şubesi" diyorlar - kabul ediyorum - ama sonra "master" a "izleme şubesi" diyorlar. Ana izleme nedir? Yanlış mı yoksa bir terminoloji sorunu mu?
Howiecamp

2
@ "Master adı verilen izleme dalı" olarak adlandırdıkları şey, uzak ana dalıyla ilgili kökünden getirilen son SHA1'i ezberlemek için, ilişkili bir uzaktan izleme dalı kaynağı / yöneticisi olan yerel bir şube yöneticisidir. Bu nedenle, "yukarı
yönlü

7

Bir izleme dalı ekledim, böylece yeni şubeme çekebilirim:

git branch --set-upstream-to origin/Development new-branch
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.