Git HEADve masteriçindeki Git arasındaki fark nedir ?
GitHub'da bir projenin klonunu yaptım ve değişiklikleri uzaktan kumandaya itmek istiyorum. Ama hangisine itmeliyim?

Git HEADve masteriçindeki Git arasındaki fark nedir ?
GitHub'da bir projenin klonunu yaptım ve değişiklikleri uzaktan kumandaya itmek istiyorum. Ama hangisine itmeliyim?

Yanıtlar:
masterbir dalın sonuna bir referanstır. Kural olarak (ve varsayılan olarak) bu genellikle ana entegrasyon dalıdır, ancak olmak zorunda değildir.
HEADaslında başka bir referansı gösteren özel bir referans türüdür. İşaret edebilir master veya işaret etmeyebilir (şu anda hangi şubenin teslim alındığını gösterecektir). Şubeye bağlı kalmak istediğinizi biliyorsanız master, buna basın.
İşte görsel bir örnek:

Kendi deponuzda bunu HEADçalıştırarak nereye işaret ettiğini kontrol edebilirsiniz :
$ git symbolic-ref HEAD
refs/heads/master
Ancak, remotes/origin/HEADuzaktaki makinede olduğu için nereye işaret ettiğini bulmak daha zordur.
Burada git referansları hakkında harika bir küçük öğretici var:
http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1
Basit cevap HEADşu anda bulunduğunuz dalın en son taahhüt bir işaretçi / etiket olmasıdır. mastergit deposunu başlattığınızda (ör. git init) oluşturduğunuz varsayılan daldır .
masterŞubeyi silebilirsiniz (örn. git branch -D master). HEADİşaretçiyi silemezsiniz .
HEADşu anda bulunduğunuz şubenin en son işlemine ilişkin bir işaretçi / etikettir." En iyi yanıltıcı olduğunu düşünüyorum. Daha eski bir taahhüdü kontrol ederseniz, HEAD artık en son taahhüdün değil, bu eski taahhüdün bir göstergesidir. Sağ?
checkoutkomut diğer yaygın SCM sistemlerinde dalların değiştirilmesine eşdeğerdir.
HEADişaretçisinin gerçekte ne olduğunu daha iyi anlamak isteyen herkes için harika bir açıklama olduğunu düşünüyorum . Yorumunuzu takdir ediyorum ve başkalarının da yapacağını düşünüyorum. Orijinal yazımın içeriği ve takip yorumunuz birbirini tamamlıyor. Teşekkürler.
Mevcut dalınızın değişikliklerini yapmanız yeterli
git push origin
ve dalınızı ' B' değiştirir ' origin/B'.
Eğer üzerinde ise masterşube, git itecektir origin/master.
Aslında, eşleşen uzak şubeleri olan yerel şubelerdeki tüm değişiklikleri zorlayacaktır origin. Push.default yapılandırma ayarı tarafından kontrol edilir .
Ayrıca Pro Git kitabında RefSpec'leri zorlamaya bakın .
Ne görüyorsanız da uzaktan reponun tüm refspecs temsil kenar çubuğudur Deneysel GitX çatal ait GitX projesi .

Bu HEADuzaktan kumanda için varsayılan dal atanır.
Bkz. git remote set-headSayfa :
Bir uzaktan kumanda için varsayılan bir dalı olması gerekmez, ancak uzaktan kumandanın adının belirli bir dal yerine belirtilmesini sağlar.
Örneğin, için varsayılan şubeoriginolarak ayarlanmışsamaster,originnormalde belirttiğiniz her yerde belirtilebilirorigin/master.