ปัญหาในการป้อนข้อความคอมมิท Git ด้วย Vim


146

ระบบปฏิบัติการ: Windows

ฉันเขียน

$ git commit

แล้วก็

"# โปรดป้อนข้อความยืนยัน"

ฉันเขียนข้อความเช่น

"เพิ่มการตรวจสอบแบบฟอร์ม"

กด Enter และไม่ได้กระทำ จากนั้นฉันกด Shift + Enter, Ctrl + Enter, Alt + Enter - ยังไม่ยืนยัน

ฉันคิดว่ามันเป็นปัญหาที่งี่เง่า แต่ฉันต้องทำอะไร?


ไม่มีปัญหา. แต่คำถามของคุณอาจได้รับความสนใจมากกว่าที่ Super User ซึ่งเป็นหัวข้อเพิ่มเติมสำหรับคำถามที่ไม่ใช่การเขียนโปรแกรมประเภทนี้: superuser.com/questions/tagged/git
bzlm

คำตอบ:


232

หากเป็น VIM สำหรับ Windows คุณสามารถทำสิ่งต่อไปนี้:

  • ป้อนข้อความของคุณตามแนวทางที่นำเสนอ
  • กด Escเพื่อให้แน่ใจว่าคุณออกจากโหมดแทรก
  • แล้วประเภทหรือ:wqEnterZZ

โปรดทราบว่าใน VIM มักจะมีหลายวิธีในการทำสิ่งหนึ่ง ที่นี่มีความแตกต่างเล็กน้อยว่า :wqEnterมักจะเขียนไฟล์ปัจจุบันก่อนที่จะปิดมันในขณะที่ZZ, :xEnter, :xiEnter, :xitEnter, :exiEnterและ:exitEnterเพียงเขียนมันถ้าเอกสารที่มีการปรับเปลี่ยน
คำพ้องความหมายทั้งหมดเหล่านี้มีการกดคีย์หลายครั้ง



1
เมื่อฉันป้อน:wqฉันเห็นข้อความต่อไปนี้ ".git / COMMIT_EDITMSG" 54L, 2316C เขียนการยกเลิกการมอบหมายเนื่องจากข้อความคอมมิทว่างเปล่า
Kanna

ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มข้อความ เมื่อได้รับแจ้งให้พิมพ์บางอย่างเช่น "ข้อความของฉันที่นี่" (คุณจะเข้าสู่ - โหมดแทรก - ฉันถือว่ากด esc เพื่อออก) เมื่อเสร็จแล้วและออกจากโหมดแทรกให้พิมพ์ 'ZZ' (ตัวพิมพ์ใหญ่ ZZ)
Kpmurphy91

22
ทำไมใครมากับสิ่งนี้ : wq Enter หรือ ZZ ฟังดูบ้า
dezman

1
iคำสั่งที่จะเริ่มต้นการใส่ข้อความเป็นประโยชน์อย่างมาก ขอบคุณ @Matt Greer สำหรับอันนั้น คำตอบนี้ดีสำหรับขั้นตอนที่เหลือ
ps2goat

47

ฉันสมมติว่าคุณกำลังใช้ msys git ถ้าคุณเป็นตัวแก้ไขที่โผล่ขึ้นมาเพื่อเขียนข้อความกระทำของคุณเป็นกลุ่ม เสียงเรียกเข้าไม่เป็นมิตรในตอนแรก คุณอาจต้องการเปลี่ยนไปใช้เครื่องมือแก้ไขอื่น ถ้าคุณต้องการใช้โปรแกรมแก้ไขอื่นดูคำตอบนี้: ฉันจะใช้ Notepad ++ (หรืออื่น ๆ ) กับ msysgit ได้อย่างไร

หากคุณต้องการใช้เสียงเรียกเข้าให้พิมพ์iเพื่อพิมพ์ข้อความของคุณ เมื่อมีความสุขกด ESC จากนั้นพิมพ์:wqและคอมไพล์จะมีความสุข

หรือเพียงพิมพ์git commit -m "your message here"เพื่อข้ามตัวแก้ไขทั้งหมด


16
เป็นกลุ่มที่เคยเป็นมิตร? หรือผู้คนเริ่มชินกับความไม่เป็นมิตรหรือเปล่า?
Ryan Lundy

8
เป็นกลุ่มที่เป็นมิตรเมื่อคุณเข้าใจวิธีการทำงาน จริงๆแล้วมันมีเหตุผลและคิดออกมาดี
Matt Greer

ถ้าฉันต้องการใช้ตัวละครที่ต้องหลบหนี (เช่น apostrophes) ในข้อความคอมมิทฉันจะใช้ vim editor เสมอเพราะมันน่ารำคาญน้อยกว่า มิฉะนั้นฉันมักจะเขียนข้อความกระทำเป็นส่วนหนึ่งของคำสั่งกระทำ
David DeMar

นี่เป็นเรื่องที่ยอดเยี่ยมเมื่อคุณต้องการแก้ไขข้อความที่ส่งมอบ
#:

15

คุณได้ลองไปแล้ว: คอมไพล์ -m "ข้อความที่นี่"

ดังนั้นในกรณีของคุณ:

git commit -m "Form validation added"

หลังจากที่คุณเพิ่มไฟล์ของคุณแน่นอน


1
ตัวแปรของคุณดีมาก แต่ฉันต้องการไปในทางของสิ่งที่ฉันเขียน (Google Translator)
aTei

ไม่ต้องกังวลฉันลืมว่ามีตัวแก้ไขหลังจากคำสั่งนั้น ฉันแทบไม่เคยคอมไพล์กระทำโดยไม่มีข้อความ "-m"
โทนี่

1

โดยทั่วไปgit commitจะมีตัวแก้ไขการโต้ตอบ (บน Linux และ Cygwin ที่กำหนดโดยเนื้อหาของ$EDITORตัวแปรสภาพแวดล้อมของคุณ) เพื่อให้คุณแก้ไขข้อความการส่งข้อความของคุณเมื่อคุณบันทึกและออกการกระทำจะเสร็จสมบูรณ์

คุณควรตรวจสอบให้แน่ใจว่ามีการเพิ่มการเปลี่ยนแปลงที่คุณพยายามกระทำในดัชนี Git สิ่งนี้เป็นตัวกำหนดสิ่งที่มุ่งมั่น ดูhttp://gitref.org/basic/สำหรับรายละเอียดเกี่ยวกับเรื่องนี้


0

คุณสามารถเปลี่ยนความคิดเห็นของตัวละครเป็นสิ่งที่นอกเหนือจาก # ดังนี้:

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