การส่งค่าคอมมิทว่างเปล่าเป็นรีโมต


242

ฉันผลักข้อตกลงไปที่รีโมท แต่ตอนนี้ฉันรู้แล้วว่าข้อความส่งมอบไม่ถูกต้อง ฉันต้องการเปลี่ยนข้อความยืนยัน แต่ AFAIK ไม่สามารถทำได้ ดังนั้นฉันจึงตัดสินใจที่จะสร้างการมอบหมายที่ว่างเปล่าด้วยข้อความที่ถูกต้อง:

git commit --allow-empty

มีข้อเสีย / ผลที่ตามมาจากการผลักว่างเปล่าหรือไม่? มีปัญหาอะไรบ้างที่ฉันอาจเผชิญในอนาคตเพราะความว่างเปล่าอันนี้?


1
ตรวจสอบเรื่องนี้คำถามที่คล้ายกันstackoverflow.com/questions/6218199/...
Montaro

คำตอบ:


80

คุณจะไม่เผชิญกับผลลัพธ์ที่เลวร้ายใด ๆ เพียงประวัติศาสตร์จะดูเหมือนสับสน

คุณสามารถเปลี่ยนข้อความยืนยันได้โดยทำ

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

แต่สิ่งนี้จะแทนที่ประวัติศาสตร์ระยะไกลกับคุณซึ่งหมายความว่าหากใครดึง repo นั้นในขณะนั้นบุคคลนี้จะโกรธคุณมาก ...

ทำมันถ้าคุณเป็นคนเดียวที่เข้าถึง repo


5
ใช่นั่นเป็นเหตุผลที่ฉันต้องการผลักดันการกระทำที่ว่างเปล่า
mrutyunjay

4
@mrutyunjay หากมีโอกาสคนอื่นดึง repo แล้วใช่ฉันคิดว่ามันเป็นตัวเลือกที่ดีกว่า
Gabriele Petronella

1
คุณจะไม่เผชิญกับผลร้ายใด ๆ เพียงประวัติศาสตร์จะดูสับสน - นี่เป็นผลลัพธ์ที่น่ากลัว! ;-)
Alois Mahdal

3
ต้องการ--force-with-leaseหลีกเลี่ยงการสูญเสียงานของผู้ทำงานร่วมกัน
Kenzo

22

การส่งคอมมิทไม่ว่าจะว่างเปล่าหรือไม่ก็ตามจะทำให้มีการเรียกใช้ git hooks ในที่สุด สิ่งนี้ไม่สามารถทำอะไรได้เลยหรือมีผลกระทบที่ทำให้โลกแตก


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

18

มีข้อเสีย / ผลที่ตามมาจากการผลักว่างเปล่าหรือไม่?

นอกเหนือจากความสับสนที่รุนแรงบางคนอาจเข้าใจว่าทำไมถึงมีความมุ่งมั่นมากมายโดยที่พวกเขาไม่มีเนื้อหาอยู่ในความเป็นจริง

คุณสามารถเปลี่ยนการคอมมิตที่คุณกดไปที่รีโมต แต่ sha1 ของการคอมมิชชัน (โดยทั่วไปคือหมายเลขรหัส) จะเปลี่ยนอย่างถาวรซึ่งจะเปลี่ยนต้นไม้ต้นกำเนิด - จากนั้นคุณต้องgit push -fย้อนกลับไปที่รีโมต


15

ตราบใดที่คุณอ้างอิงการกระทำอื่น ๆ อย่างชัดเจนจากการกระทำที่ว่างเปล่ามันก็น่าจะดี สิ่งที่ต้องการ:

Commit message errata for [commit sha1]

[new commit message]

ดังที่คนอื่น ๆ ชี้ว่าสิ่งนี้มักจะดีกว่าที่จะบังคับให้ส่งการกระทำที่ถูกต้อง


12
 $ git commit --allow-empty -m "Trigger Build"

2
แม้ว่ารหัสนี้อาจแก้ปัญหาได้รวมถึงคำอธิบายว่าทำไมและวิธีแก้ปัญหานี้จะช่วยปรับปรุงคุณภาพการโพสต์ของคุณได้อย่างไรและอาจส่งผลให้คะแนนมากขึ้น จำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตไม่ใช่เพียงแค่คนที่ถามตอนนี้ โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายและระบุข้อ จำกัด และสมมติฐานที่ใช้ จากการทบทวน
ดับเบิ้ลบี

-1

เกี่ยวกับสิ่งนี้

 git commit --allow-empty-message -m ''

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