ฉันจะหยุดการคอมมิท Git ได้อย่างไรเมื่อ VI อยู่บนหน้าจอเพื่อรอรับข้อความคอมมิชชัน?


203

ฉันได้ขอให้ Git ทำการคอมมิชชันจากภายใน git bash มันทำให้ VI ขึ้นมาเหมือนที่เคยทำ

ตอนนี้ฉันต้องการที่จะยกเลิกการคอมมิชชันฉันจะป้องกันไม่ให้การคอมมิทดำเนินการต่อจากจุดนี้ได้อย่างไร?


ควรเพิ่มว่าคุณต้องกด Esc ก่อนที่จะเข้า:q!เพื่อออกจากกลุ่ม
M_Merciless

คำตอบ:


331

คุณมีสองทางเลือก:

  • ระบุข้อความการส่งเปล่า หากเป็นการกระทำใหม่และคุณยังไม่ได้บันทึกข้อความคุณสามารถใช้:q!(ออกโดยไม่บันทึก) หากคุณได้บันทึกไว้แล้ว (หรือคุณกำลังแก้ไขข้อผูกพันก่อนหน้า) เพียงแค่ลบข้อความบันทึกทั้งหมดและบันทึกอีกครั้ง สามารถทำได้ด้วยggdG+ :wqในเสียงเรียกเข้า

  • ให้เอดิเตอร์ออกด้วยโค้ดทางออกที่ไม่ใช่ศูนย์ ในกลุ่มคุณสามารถใช้:cq(ออกด้วยรหัสข้อผิดพลาด)

เป็นที่น่าสังเกตว่าคุณสามารถรีเซ็ตสำเนาการทำงานของคุณเป็นสถานะก่อนหน้าการส่งมอบgit reset HEAD^ได้


95
: cq คือธุรกิจ ด้วยเหตุผลบางอย่างคอมไพล์ไถโดยไม่คำนึงว่าฉันใช้: q!
Sirex

2
git reset HEAD ^ จะยกเลิกการแก้ไขในท้องถิ่น
juanmf

2
: Q! อาจไม่ทำงานเพราะมีข้อความที่กำหนดไว้ล่วงหน้าแล้วคุณเพียงแก้ไขมัน
Papipo

อาการสะอึก: หากมีการgit reset HEAD^ร้องขอเพิ่มเติมเชลล์ของคุณอาจตีความ ^ ว่าเป็นความต่อเนื่องของบรรทัด ลองgit reset "HEAD^", git reset HEAD^^หรือgit reset HEAD~1แทนต่อคำตอบนี้: stackoverflow.com/questions/14203952/git-reset-asks-more
เจสตีเว่นฮา

75
  • :q!ไม่ทำงานเมื่อแก้ไขข้อผูกพัน จะไม่อัปเดตข้อความการส่งมอบ แต่ดำเนินการแก้ไข :-(
  • :cq ยกเลิกการแก้ไขอย่างสมบูรณ์

1
ฉันหวังว่าฉันจะเพิ่ม +1 อีก ฉันอยู่ที่นี่เป็นเวลานานเมื่อการแก้ไขของฉันหยิบความผิดที่เกิดขึ้น
Wyrmwood

8

เพื่อสรุป:

  • เมื่อมีการสร้างใหม่กระทำ (เช่นgit commit) :q!เลิกใช้
  • เมื่อแก้ไข (เช่นgit commit --amend) ลบข้อความคอมมิชชัน (เฉพาะสองสามแถวแรกที่ไม่ได้ขึ้นต้นด้วย #) ตัวอย่างเช่นโดยกดปุ่ม v และใช้ปุ่มลูกศรเพื่อเลือกและกด Delete ออกด้วย:wqเพื่อใช้การเปลี่ยนแปลง ! หากคุณใช้:q!การเปลี่ยนแปลงจะหายไปและข้อความยืนยันก่อนหน้านี้จะถูกใช้

เมื่อใช้ VIM มันก็โอเคในกรณีที่จะออกด้วย:cq- VIM จะออกด้วยรหัสข้อผิดพลาดและการกระทำจะถูกยกเลิก

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