คอมมิต Git เปิดไฟล์ข้อความเปล่าเพื่ออะไร


93

ในแบบฝึกหัด Git ทั้งหมดที่ฉันได้อ่านพวกเขาบอกว่าคุณสามารถทำได้:

git init
git add .
git commit

เมื่อฉันทำเช่นนั้นฉันจะเปิดไฟล์ข้อความขนาดใหญ่ ดูเหมือนว่าไม่มีบทช่วยสอนใด ๆ เลยดังนั้นฉันจึงไม่รู้ว่าจะทำอย่างไรกับไฟล์หรือจะใส่อะไรลงไปถ้ามีอะไร

คำตอบ:


124

คุณควรใส่ข้อความคอมมิตในไฟล์ข้อความนี้จากนั้นบันทึกและออก

คุณสามารถเปลี่ยนโปรแกรมแก้ไขข้อความเริ่มต้นที่คอมไพล์ใช้กับคำสั่งนี้:

git config --global core.editor "nano"

คุณต้องเปลี่ยน nano เป็นคำสั่งใด ๆ ที่ปกติจะเปิดโปรแกรมแก้ไขข้อความของคุณ


15
คุณไม่ต้องเพิ่ม--globalเพื่อเปลี่ยนค่าเริ่มต้นหรือไม่?
Znarkus

4
@ Znarkus จุดดี ดูที่นี่สำหรับข้อมูลเพิ่มเติม โดยทั่วไปคำตอบที่ได้รับจะเปลี่ยนเฉพาะการตั้งค่าสำหรับโครงการปัจจุบันในขณะที่--globalเปลี่ยนสำหรับผู้ใช้ปัจจุบันและ--systemเปลี่ยนสำหรับทุกคนบนคอมพิวเตอร์เครื่องนั้น
Matt Fenwick

24
แม้ว่าคำตอบนี้จะมีข้อมูลที่ดี แต่ก็ไม่ได้ตอบคำถามที่แท้จริง
Adrian Schmidt

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

2
@ โจฮันคุณไม่ผิด แต่เมื่อสะดุดกับสิ่งนี้ฉันพบว่าคำตอบนี้มีประโยชน์มาก ดังนั้นฉันจึงโหวตให้
Danation

65

ดังที่กล่าวโดยBen Collinsหากไม่มี-m "..."อาร์กิวเมนต์ในการพิมพ์คอมมิตอินไลน์ (ซึ่งโดยทั่วไปเป็นความคิดที่ไม่ดีเนื่องจากจะกระตุ้นให้คุณพูดสั้น ๆ ) "ไฟล์ข้อความขนาดใหญ่" ที่เปิดขึ้นนี้เป็นหน้าต่างสำหรับพิมพ์ข้อความคอมมิต .

โดยปกติจะแนะนำให้เขียนสรุปในบรรทัดแรกข้ามบรรทัดจากนั้นเขียนบันทึกโดยละเอียดเพิ่มเติมด้านล่าง ซึ่งจะช่วยให้โปรแกรมที่ทำสิ่งต่างๆเช่นส่งอีเมลข้อความคอมมิตพร้อมกับหัวเรื่องที่เหมาะสมและรายการการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นในเนื้อหา

แทนที่จะเปลี่ยนEDITORตัวแปรเชลล์คุณยังสามารถเปลี่ยนตัวแก้ไขที่ใช้โดยการเพิ่มบรรทัดเพิ่มเติมใน~/.gitconfigไฟล์ของคุณ:

[core]
    editor = emacs
    excludesfile = /Users/will/.gitignore

บรรทัดที่สองนั้นไม่มีส่วนเกี่ยวข้องกับปัญหาของคุณ แต่ฉันพบว่ามันมีประโยชน์มากดังนั้นฉันจึงสามารถเติม~/.gitignoreไฟล์ของฉันด้วยประเภทไฟล์ทั้งหมดที่ฉันรู้ว่าฉันจะไม่เคยต้องการผูกมัดกับที่เก็บ


36

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

นอกจากนี้ยังมีสวิตช์ "-m msg" บนคำสั่งนี้ที่ช่วยให้คุณเพิ่มข้อความคอมมิตในบรรทัดคำสั่ง


สวัสดี Lou ฉันเป็นมือใหม่ใน GIt ด้วย ฉันคิดว่าหลังจากที่ฉันมีอยู่หรือเขียนและมีอยู่ในไฟล์ข้อความแล้วคอมไพล์นั้นไม่ได้กระทำการจัดเตรียมและข้อความคอมมิตที่เพิ่งเขียน ดังนั้นความหมายของการเพิ่มข้อความลงในไฟล์ข้อความนี้ถ้าฉันไม่สามารถทำการคอมมิตได้หลังจากเขียนและออกจากมัน (โปรดแก้ไขฉันถ้าฉันผิดขอบคุณมาก)
SLN

@SLN สถานการณ์ที่คุณสรุปไม่ชัดเจนมาก ฉันจะเดาและแนะนำว่าบางทีคุณอาจไม่ได้จัดเตรียมไฟล์ใด ๆ สำหรับการคอมมิตดังนั้นความพยายามของคุณที่จะกระทำไม่ได้ทำอะไรเลย ใช้ "git add" กับไฟล์ขั้นแรกที่คุณต้องการคอมมิตจากนั้น "คอมมิต" เพื่อดำเนินการคอมมิตจริง
Lou

15

หากคุณใช้ Mac OS X และใช้ BBEdit คุณสามารถตั้งค่านี้เป็นตัวแก้ไขตัวเลือกสำหรับส่งข้อความได้:

git config --global core.editor "bbedit -w"

เมื่อแก้ไขเสร็จแล้วให้บันทึกและปิดไฟล์จากนั้นคอมไพล์จะใช้สำหรับความคิดเห็น


15

สมมติว่าตัวแก้ไขของคุณมีค่าเริ่มต้นเป็น vi / vim คุณสามารถออกจากโปรแกรมแก้ไขข้อความคอมมิตโดยพิมพ์:

:x

ซึ่งจะบันทึกและออกจากไฟล์ข้อความคอมมิต จากนั้นคุณจะกลับไปที่ส่วนคำสั่ง git ปกติ

คำสั่ง vi เพิ่มเติม:
http://www.lagmonster.org/docs/vi.html


9
ถ้าคุณชอบฉันแสดงว่าคุณอยู่ในโหมดแทรก / แทนที่ (เช่นพิมพ์ข้อความคอมมิต) ถ้าใช่คุณจะต้องกดescเพื่อเข้าสู่โหมดคำสั่งก่อนพิมพ์:xเพื่อบันทึกและออก
Martin Carney

1
สมมติว่าบรรณาธิการของเขาตั้งค่าเริ่มต้นเป็น vi / vim สิ่งนี้จะไม่เป็นจริงสำหรับทุกคน ไม่แน่นอนสำหรับผู้ใช้ emacs นี้)
haziz

สิ่งนี้ช่วยฉันได้มาก ขอบคุณมาก
Danation

12

อย่างที่ทุกคนบอกว่านี่เป็นเพียงที่ที่คุณเพิ่มความคิดเห็นของคุณ - แต่สำหรับบางคนอาจยังสับสนโดยเฉพาะหากคุณไม่ได้กำหนดค่าการตั้งค่าตัวแก้ไขและคุณไม่ทราบว่าVIคืออะไร: จากนั้นคุณอาจตกใจ เพราะคุณจะคิดว่าคุณยังอยู่ใน GIT-Bash

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


8
ฉันรู้ว่าการลงท้ายด้วย vi ทำให้ฉันตกใจเสมอ :)
Will Robertson

1
ตอนนี้สิ่งต่างๆมีความหมายมากขึ้น +1
Matt Ellen

11

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

git commit -m "my first commit"

7

เมื่อคุณสร้างคอมมิตใหม่คอมไพล์จะเริ่มโปรแกรมแก้ไขข้อความและเขียนบางสิ่งลงไป

การใช้โปรแกรมแก้ไขข้อความนี้มีจุดประสงค์เพื่อให้คุณเขียนข้อความคอมมิตที่จะเชื่อมโยงกับคอมมิตที่สร้างขึ้นโดยเฟชของคุณ

หลังจากเสร็จสิ้นให้บันทึกและออกจากโปรแกรมแก้ไขข้อความ Git จะใช้สิ่งที่คุณเขียนเป็นข้อความคอมมิต

ข้อความคอมมิตมีโครงสร้างเฉพาะโดยอธิบายดังนี้:

บรรทัดแรกของข้อความคอมมิตถูกใช้เป็นส่วนหัวของข้อความ (หรือชื่อเรื่อง) ความยาวที่กำหนดไว้ล่วงหน้าของส่วนหัวคอมมิตคือน้อยกว่า 40 อักขระเนื่องจากนี่คือจำนวนอักขระที่ github แสดงบนแท็บ Commits ของที่เก็บที่กำหนดก่อนที่จะตัดทอนซึ่งบางคนพบว่าน่ารำคาญ

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

บรรทัดใหม่หนึ่งบรรทัดจะระบุส่วนหัวและเนื้อหาของข้อความ

ร่างกายสามารถประกอบด้วยอะไรก็ได้ที่คุณต้องการ ภาพรวมของการเปลี่ยนแปลงที่เกิดจากข้อผูกพันของคุณมีความสมเหตุสมผล แอปพลิเคชั่นของบุคคลที่สามบางตัวใช้ข้อมูลรวมถึงเนื้อหาของการส่งข้อความเพื่อปิด hooks ประเภทต่างๆ (ฉันคิดว่า Gerrit และ Pivotal Tracker เป็นชื่อสอง)

นี่เป็นตัวอย่างสั้น ๆ และไพเราะ ชั้นนำ#หมายถึงความคิดเห็น

Gitignore index.pyc

Ignore gunicorn generated binary file
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 10 commits.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   .gitignore
#

นี่คือหนึ่งในนาย Torvalds เห็นในสิ่งที่ทำให้ดีกระทำ

และที่นี่ Tpope ก็ทำเช่นเดียวกัน

ตามที่ระบุไว้ในคำตอบอื่น ๆ การเปลี่ยนเครื่องมือแก้ไขเริ่มต้นเป็นหนึ่งซับในบรรทัดคำสั่ง

สำหรับความชอบของฉัน:

git config --global core.editor "vim"

2
นี่ควรเป็นคำตอบที่ได้รับการยอมรับสำหรับคำถาม
mppfiles

6

ลองใช้ Escape ตามด้วย ZZ หลังจากพิมพ์ข้อความของคุณเสร็จแล้ว อย่างที่คนอื่นบอกเมื่อคุณเรียกใช้คำสั่งนั้นมันจะเรียกใช้โปรแกรมแก้ไขข้อความเพื่อป้อนข้อความลงไป ในกรณีของฉัน (OS X) มันคือ VI ซึ่งฉันคิดออกหลังจากขุดไปรอบ ๆ ในกรณีนี้ให้กด Escape เพื่อเข้าสู่โหมด "command" (ซึ่งตรงข้ามกับโหมด INSERT) ให้ป้อน ZZ ฉันแน่ใจว่ามีวิธีอื่นในการทำงานให้สำเร็จ แต่ก็ทำเพื่อฉัน การที่ฉันไม่เคยใช้ VI หรือ emac มันก็ไม่ชัดเจนสำหรับฉันและไม่ได้กล่าวถึงในคู่มือเริ่มต้นใด ๆ ที่ฉันใช้ หวังว่านี่จะช่วยได้


4

git commitคำสั่งจะเปิดขึ้นบรรณาธิการที่ระบุไว้ในEDITORตัวแปรสภาพแวดล้อมเพื่อให้คุณสามารถป้อนกระทำความคิดเห็น ในระบบ Linux หรือ BSD ค่านี้ควรเป็น vi ตามค่าเริ่มต้นแม้ว่าตัวแก้ไขใด ๆ ควรทำงานได้

เพียงป้อนความคิดเห็นของคุณและบันทึกไฟล์


2

ฉันสับสนเพราะฉันพยายามป้อนชื่อไฟล์ต่อจาก: w ใน VIM นั่นไม่ได้ทำให้เกิดการคอมมิต แต่ฉันกลับได้รับข้อความ "ยกเลิกการคอมมิตเนื่องจากข้อความคอมมิตว่างเปล่า" อย่าใส่ชื่อไฟล์หลัง: w. : w บันทึกไฟล์เป็น. git / COMMIT_EDITMSG ตามค่าเริ่มต้น จากนั้น: q เพื่อออกเพื่อดำเนินการคอมมิต คุณสามารถดูผลลัพธ์ด้วยบันทึกคอมไพล์


หรือคุณสามารถใช้: x เพื่อบันทึกและออก
TJ Ellis

2

ตอนนี้ฉันเปลี่ยนโปรแกรมแก้ไขเป็น emacs แล้วทุกอย่างก็ใช้ได้ดี

แต่ก่อนที่ฉันจะตั้งค่านี้ "คอมมิต -a" ได้เปิด gedit แต่ก็ลงท้ายด้วย "การยกเลิกการคอมมิตเนื่องจากข้อความคอมมิตว่างเปล่า" การบันทึกไฟล์จาก gedit ไม่มีผล การตั้งค่าตัวแก้ไขด้วย "git config --global core.editor" gedit "" อย่างชัดเจนก็ได้ผลลัพธ์เช่นเดียวกัน

ไม่มีอะไรผิดปกติกับ emacs แต่ด้วยความอยากรู้ว่าทำไมสิ่งนี้ไม่ทำงานกับ gedit และมีวิธีใดบ้างที่จะทำให้มันใช้งานได้?

ขอบคุณ.


หาก gedit ทำงานอยู่แล้วการทำ "gedit file.txt" จะเป็นการเปิดไฟล์ในหน้าต่างที่มีอยู่และกลับมาทันที ... คุณควรโพสต์คำถามนี้เป็นคำถามจริงโดยเฉพาะเกี่ยวกับการใช้ gedit กับ git
araqnid

6
เจอเรื่องนี้ด้วย คุณสามารถแก้ไขได้โดยตั้งค่า gedit ให้ทำงานในโหมด 'สแตนด์อโลน':git config --global core.editor "gedit -s"
brittohalloran

2

สำหรับผู้ที่ใช้ OS XI พบว่าคำสั่งนี้ทำงานได้ดี:
git config --global core.editor "open -t -W"

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

ห้องสมุดนักพัฒนาของ Apple - เปิดคำสั่ง

คุณยังสามารถลองgit config --global core.editor "open -e -W"ถ้าคุณต้องการให้ git เปิด textedit เสมอไม่ว่าโปรแกรมแก้ไขเริ่มต้นจะเป็นอย่างไร


1

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

นอกจากนี้หากคุณต้องการดูรายการไฟล์แบบง่ายๆที่คุณจะต้องกระทำแทนที่จะเป็นรายการที่แตกต่างกันมากให้ลองทำก่อน

git diff --name-only

1

เมื่อทำการควบคุมการแก้ไขคุณควรอธิบายเสมอว่าการเปลี่ยนแปลงที่คุณทำคืออะไร โดยปกติแล้วในครั้งแรกที่คุณมีความคิดเห็นเช่น "Initial Commit"

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

เพิ่มฟีเจอร์ทดลอง x

X จะเพิ่มประสิทธิภาพของคุณลักษณะ Y ในเงื่อนไข Z หากคุณต้องการให้ X เปิดใช้งานด้วยสวิตช์ -x หรือ --feature-eks ที่อยู่นี้ขอคุณสมบัติ # 1138


1

เนื่องจากยังใหม่กับ Terminal ด้วยเช่นกัน "Escape แล้ว ZZ" ก็ใช้ได้ผลสำหรับฉันฉันมีปัญหานี้มาหลายเดือนแล้วและยังหาวิธีแก้ไขไม่ได้

ขอบคุณ TheGeoff สำหรับคำแนะนำง่ายๆของคุณ!


0

ต่อไปนี้อาจเป็นวิธีที่ง่ายที่สุดในการดำเนินการเปลี่ยนแปลงทั้งหมด:

git commit -a -m "Type your commit message here..."

แน่นอนว่ามีวิธีที่ละเอียดกว่าในการกระทำ แต่นั่นควรจะช่วยให้คุณเริ่มได้

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