git push origin HEAD หมายถึงอะไร?


111

ฉันพบในคู่มืออย่างเป็นทางการ :

git push origin HEAD

วิธีที่สะดวกในการผลักดันสาขาปัจจุบันไปยังชื่อเดียวกันบนรีโมท

อย่างไรก็ตามความหมายของคำสั่งนั้นไม่ชัดเจนสำหรับฉัน ทำไมถึงมีผลเช่นนี้

ฉันไม่สามารถหาคำตอบได้ ( คำถามนี้ดูเหมือนจะช่วยแก้ปัญหาได้ แต่ชื่อเรื่องทำให้เข้าใจผิด)

คำตอบ:


142

HEADชี้ไปที่ด้านบนสุดของสาขาปัจจุบัน gitสามารถขอรับชื่อสาขาได้จากที่ ดังนั้นจึงเหมือนกับ:

git push origin CURRENT_BRANCH_NAME

แต่คุณไม่จำเป็นต้องจำ / พิมพ์ชื่อสาขาปัจจุบัน นอกจากนี้ยังช่วยป้องกันไม่ให้คุณดันไปยังสาขาระยะไกลที่ไม่ถูกต้อง

หากคุณต้องการพุชสาขาที่แตกต่างจากสาขาปัจจุบันคำสั่งจะไม่ทำงาน


18
มันอาจจะช่วยพูดถึงว่าเป็นโทษสัญลักษณ์และสามารถมองเห็นได้ด้วยHEAD git symbolic-ref HEAD
John Szakmeister

อะไรคือความแตกต่างระหว่าง: git push originและgit push origin HEAD?
Maciek

1
@MaciejD git push origin โดยไม่ระบุชื่อสาขาไม่ทำงาน ไม่ว่าคุณจะเพิ่มชื่อสาขาหรือคุณพูดว่า HEAD ซึ่งหมายถึงสาขาปัจจุบันที่คุณอยู่
Schwarzie2478

3
จริงๆแล้วgit push originเป็นคำสั่งที่ถูกต้อง หากpush.defaultการตั้งค่าคอนฟิก Git มีการตั้งค่าnothingแล้วgit push origin"จะไม่ผลักดันอะไร (ข้อผิดพลาดออก)" man git-configตาม แต่push.defaultการตั้งค่าอื่น ๆ มีพฤติกรรมอื่น ๆ ค้นหาpush.defaultในman git-config. นอกจากนี้ให้ค้นหา "เมื่อบรรทัดคำสั่งไม่ระบุตำแหน่งที่จะพุช" และ "เมื่อบรรทัดคำสั่งไม่ระบุสิ่งที่จะพุช" ในส่วนคำอธิบายที่ด้านบนของman git-push(นั่นman git-pushไม่ใช่man git-config)
David Winiecki

0

หากคุณต้องการผลักดันเข้าไปในสาขาระยะไกลเฉพาะคุณสามารถเรียกใช้:

git push origin HEAD:<name-of-remote-branch>

นี่คือสิ่งที่ฉันพบเมื่อพยายามผลักดัน repo ของฉันกลับไปที่สาขาระยะไกล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.