Git HEAD
ve master
iç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 HEAD
ve master
iç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:
master
bir dalın sonuna bir referanstır. Kural olarak (ve varsayılan olarak) bu genellikle ana entegrasyon dalıdır, ancak olmak zorunda değildir.
HEAD
aslı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/HEAD
uzaktaki 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. master
git 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ğ?
checkout
komut diğer yaygın SCM sistemlerinde dalların değiştirilmesine eşdeğerdir.
HEAD
iş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 HEAD
uzaktan kumanda için varsayılan dal atanır.
Bkz. git remote set-head
Sayfa :
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 şubeorigin
olarak ayarlanmışsamaster
,origin
normalde belirttiğiniz her yerde belirtilebilirorigin/master
.