Apa perbedaan antara HEAD
dan master
di Git?
Saya melakukan klon proyek di GitHub dan ingin mendorong perubahan saya ke remote. Tapi ke mana saya harus mendorong?
Apa perbedaan antara HEAD
dan master
di Git?
Saya melakukan klon proyek di GitHub dan ingin mendorong perubahan saya ke remote. Tapi ke mana saya harus mendorong?
Jawaban:
master
adalah referensi ke ujung cabang. Secara konvensi (dan secara default) ini biasanya cabang integrasi utama, tetapi tidak harus demikian.
HEAD
sebenarnya adalah jenis referensi khusus yang menunjuk ke referensi lain. Mungkin menunjuk master
atau mungkin tidak (itu akan menunjuk ke cabang mana saja yang saat ini sedang diperiksa). Jika Anda tahu Anda ingin melakukan ke master
cabang maka dorong ke sini.
Ini adalah contoh visual:
Di repositori Anda sendiri, Anda dapat memeriksa ke mana arah HEAD
menunjuk dengan menjalankan ini:
$ git symbolic-ref HEAD
refs/heads/master
Namun, mencari tahu ke mana remotes/origin/HEAD
arahnya lebih rumit karena berada di mesin jarak jauh.
Ada sedikit tutorial hebat tentang referensi git di sini:
http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1
Jawaban sederhananya adalah itu HEAD
adalah penunjuk / label untuk komit terbaru dari cabang tempat Anda saat ini. master
adalah cabang default yang dibuat ketika Anda menginisialisasi repositori git (mis git init
.).
Anda dapat menghapus master
cabang (mis git branch -D master
.). Anda tidak dapat menghapus HEAD
pointer.
HEAD
adalah penunjuk / label untuk komit terbaru dari cabang tempat Anda saat ini." Saya pikir ini paling menyesatkan. Jika Anda checkout komit yang lebih lama, maka HEAD sekarang adalah pointer ke komit yang lebih lama, bukan komit yang terbaru. Baik?
checkout
perintahnya sama dengan mengganti cabang dalam sistem SCM umum lainnya.
HEAD
sebenarnya pointer Git . Saya menghargai komentar Anda dan berpikir orang lain juga akan. Konten posting asli saya bersama dengan komentar tindak lanjut Anda saling melengkapi. Terima kasih.
Cukup dorong perubahan cabang Anda saat ini
git push origin
dan itu akan mendorong cabang Anda ' B
' berubah menjadi ' origin/B
'.
Jika Anda berada di master
cabang Anda , git akan mendorong ke origin/master
.
Sebenarnya itu akan mendorong semua perubahan pada cabang lokal yang memiliki cabang terpencil yang cocok di origin
. Itu dikendalikan oleh pengaturan config push.default .
Lihat juga mendorong RefSpecs di buku Pro Git .
Apa yang Anda lihat adalah bilah samping yang mewakili semua refspec repo jarak jauh Anda di fork GitX eksperimental dari proyek GitX .
The HEAD
akan menunjuk cabang default untuk jarak jauh itu.
Lihat git remote set-head
halaman manual :
Memiliki cabang default untuk kendali jarak jauh tidak diperlukan, tetapi memungkinkan nama kendali jarak jauh ditentukan sebagai pengganti cabang tertentu.
Misalnya, jika cabang default untukorigin
diatur kemaster
, makaorigin
dapat ditentukan di mana pun Anda biasanya menentukanorigin/master
.