ความแตกต่างระหว่างHEADและmasterใน Git คืออะไร?
ฉันโคลนโปรเจ็กต์บน GitHub และต้องการผลักดันการเปลี่ยนแปลงของฉันไปยังรีโมต แต่ฉันควรผลักดันอันไหนดี?

ความแตกต่างระหว่างHEADและmasterใน Git คืออะไร?
ฉันโคลนโปรเจ็กต์บน GitHub และต้องการผลักดันการเปลี่ยนแปลงของฉันไปยังรีโมต แต่ฉันควรผลักดันอันไหนดี?

คำตอบ:
masterเป็นการอ้างอิงถึงจุดสิ้นสุดของสาขา ตามแบบแผน (และโดยค่าเริ่มต้น) นี่เป็นสาขาการรวมหลัก แต่ไม่จำเป็นต้องเป็น
HEADจริงๆแล้วเป็นการอ้างอิงชนิดพิเศษที่ชี้ไปที่การอ้างอิงอื่น มันอาจชี้ไปที่master หรืออาจไม่ (มันจะชี้ไปที่สาขาใดเช็คเอาท์ในปัจจุบัน) หากคุณรู้ว่าคุณต้องการที่จะกระทำในmasterสาขาแล้วผลักไปที่นี้
นี่คือตัวอย่างภาพ:

ในพื้นที่เก็บข้อมูลของคุณเองคุณสามารถตรวจสอบตำแหน่งที่HEADชี้ไปได้ด้วยการรันสิ่งนี้:
$ git symbolic-ref HEAD
refs/heads/master
อย่างไรก็ตามการค้นหาตำแหน่งที่remotes/origin/HEADชี้ไปนั้นมีความยุ่งยากมากขึ้นเพราะอยู่บนเครื่องระยะไกล
มีแบบฝึกหัดเล็ก ๆ น้อย ๆ เกี่ยวกับการอ้างอิง git ที่นี่:
http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1
คำตอบง่ายๆคือHEADตัวชี้ / ป้ายกำกับการกระทำล่าสุดของสาขาที่คุณเปิดอยู่ masterเป็นสาขาเริ่มต้นที่สร้างขึ้นเมื่อคุณเริ่มต้นพื้นที่เก็บข้อมูล git (เช่นgit init)
คุณสามารถลบmasterสาขา (เช่นgit branch -D master) คุณไม่สามารถลบHEADตัวชี้
HEADเป็นตัวชี้ / ป้ายกำกับการกระทำล่าสุดของสาขาที่คุณเปิดอยู่" ฉันคิดว่านี่เป็นสิ่งที่ทำให้เข้าใจผิดได้ดีที่สุด หากคุณชำระเงินการกระทำที่เก่ากว่าตอนนี้ HEAD จะกลายเป็นตัวชี้ไปยังการกระทำที่เก่ากว่าไม่ใช่การกระทำล่าสุด ขวา?
checkoutคำสั่งนั้นเทียบเท่ากับการสลับสาขาในระบบ SCM ทั่วไปอื่น ๆ
HEADตัวชี้Git คืออะไร ฉันขอขอบคุณความคิดเห็นของคุณและคิดว่าคนอื่นจะทำเช่นกัน เนื้อหาโพสต์ต้นฉบับของฉันพร้อมกับความคิดเห็นติดตามผลของคุณช่วยเสริมซึ่งกันและกัน ขอบคุณ
เพียงแค่ผลักดันการเปลี่ยนแปลงของสาขาปัจจุบันของคุณ
git push origin
และจะผลักดันให้สาขาของคุณ ' B' การเปลี่ยนแปลง ' origin/B'
ถ้าคุณอยู่ในของคุณสาขาคอมไพล์จะผลักดันไปmaster จริงๆแล้วมันจะผลักดันการเปลี่ยนแปลงทั้งหมดบนกิ่งไม้ในท้องถิ่นที่ได้ตรงกับสาขาที่ห่างไกล
มันจะถูกควบคุมโดยการตั้งค่าคอนฟิกpush.default
ดูยังผลักดัน RefSpecs ในหนังสือเล่มorigin/masterorigin
สิ่งที่คุณเห็นเป็นแถบด้านข้างที่เป็นตัวแทนของ refspecs ทั้งหมดของธุรกรรมซื้อคืนระยะไกลของคุณในส้อมทดลอง GitXของโครงการ GitX

HEADจะกำหนดให้สาขาเริ่มต้นสำหรับระยะไกลที่
ดูgit remote set-headหน้าคน :
ไม่จำเป็นต้องมีสาขาเริ่มต้นสำหรับรีโมต แต่อนุญาตให้ระบุชื่อของรีโมตแทนการระบุของสาขาที่ระบุ
ตัวอย่างเช่นถ้าสาขาเริ่มต้นสำหรับoriginการตั้งค่าการmasterแล้วอาจจะระบุทุกที่ที่คุณจะได้ตามปกติระบุoriginorigin/master