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