ในแบบฝึกหัด Git ทั้งหมดที่ฉันได้อ่านพวกเขาบอกว่าคุณสามารถทำได้:
git init
git add .
git commit
เมื่อฉันทำเช่นนั้นฉันจะเปิดไฟล์ข้อความขนาดใหญ่ ดูเหมือนว่าไม่มีบทช่วยสอนใด ๆ เลยดังนั้นฉันจึงไม่รู้ว่าจะทำอย่างไรกับไฟล์หรือจะใส่อะไรลงไปถ้ามีอะไร
ในแบบฝึกหัด Git ทั้งหมดที่ฉันได้อ่านพวกเขาบอกว่าคุณสามารถทำได้:
git init
git add .
git commit
เมื่อฉันทำเช่นนั้นฉันจะเปิดไฟล์ข้อความขนาดใหญ่ ดูเหมือนว่าไม่มีบทช่วยสอนใด ๆ เลยดังนั้นฉันจึงไม่รู้ว่าจะทำอย่างไรกับไฟล์หรือจะใส่อะไรลงไปถ้ามีอะไร
คำตอบ:
คุณควรใส่ข้อความคอมมิตในไฟล์ข้อความนี้จากนั้นบันทึกและออก
คุณสามารถเปลี่ยนโปรแกรมแก้ไขข้อความเริ่มต้นที่คอมไพล์ใช้กับคำสั่งนี้:
git config --global core.editor "nano"
คุณต้องเปลี่ยน nano เป็นคำสั่งใด ๆ ที่ปกติจะเปิดโปรแกรมแก้ไขข้อความของคุณ
--global
เปลี่ยนสำหรับผู้ใช้ปัจจุบันและ--system
เปลี่ยนสำหรับทุกคนบนคอมพิวเตอร์เครื่องนั้น
ดังที่กล่าวโดยBen Collinsหากไม่มี-m "..."
อาร์กิวเมนต์ในการพิมพ์คอมมิตอินไลน์ (ซึ่งโดยทั่วไปเป็นความคิดที่ไม่ดีเนื่องจากจะกระตุ้นให้คุณพูดสั้น ๆ ) "ไฟล์ข้อความขนาดใหญ่" ที่เปิดขึ้นนี้เป็นหน้าต่างสำหรับพิมพ์ข้อความคอมมิต .
โดยปกติจะแนะนำให้เขียนสรุปในบรรทัดแรกข้ามบรรทัดจากนั้นเขียนบันทึกโดยละเอียดเพิ่มเติมด้านล่าง ซึ่งจะช่วยให้โปรแกรมที่ทำสิ่งต่างๆเช่นส่งอีเมลข้อความคอมมิตพร้อมกับหัวเรื่องที่เหมาะสมและรายการการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นในเนื้อหา
แทนที่จะเปลี่ยนEDITOR
ตัวแปรเชลล์คุณยังสามารถเปลี่ยนตัวแก้ไขที่ใช้โดยการเพิ่มบรรทัดเพิ่มเติมใน~/.gitconfig
ไฟล์ของคุณ:
[core]
editor = emacs
excludesfile = /Users/will/.gitignore
บรรทัดที่สองนั้นไม่มีส่วนเกี่ยวข้องกับปัญหาของคุณ แต่ฉันพบว่ามันมีประโยชน์มากดังนั้นฉันจึงสามารถเติม~/.gitignore
ไฟล์ของฉันด้วยประเภทไฟล์ทั้งหมดที่ฉันรู้ว่าฉันจะไม่เคยต้องการผูกมัดกับที่เก็บ
ไฟล์ข้อความที่กำลังเปิดคือข้อมูลสรุปของการดำเนินการคอมมิตปัจจุบัน คอมมิตคอมไพล์จะนำคุณเข้าสู่ไฟล์นี้เพื่อให้คุณสามารถเพิ่มข้อความคอมมิตที่ด้านบนของไฟล์ เมื่อคุณเพิ่มข้อความของคุณแล้วให้บันทึกและออกจากไฟล์นี้
นอกจากนี้ยังมีสวิตช์ "-m msg" บนคำสั่งนี้ที่ช่วยให้คุณเพิ่มข้อความคอมมิตในบรรทัดคำสั่ง
หากคุณใช้ Mac OS X และใช้ BBEdit คุณสามารถตั้งค่านี้เป็นตัวแก้ไขตัวเลือกสำหรับส่งข้อความได้:
git config --global core.editor "bbedit -w"
เมื่อแก้ไขเสร็จแล้วให้บันทึกและปิดไฟล์จากนั้นคอมไพล์จะใช้สำหรับความคิดเห็น
สมมติว่าตัวแก้ไขของคุณมีค่าเริ่มต้นเป็น vi / vim คุณสามารถออกจากโปรแกรมแก้ไขข้อความคอมมิตโดยพิมพ์:
:x
ซึ่งจะบันทึกและออกจากไฟล์ข้อความคอมมิต จากนั้นคุณจะกลับไปที่ส่วนคำสั่ง git ปกติ
คำสั่ง vi เพิ่มเติม:
http://www.lagmonster.org/docs/vi.html
esc
เพื่อเข้าสู่โหมดคำสั่งก่อนพิมพ์:x
เพื่อบันทึกและออก
อย่างที่ทุกคนบอกว่านี่เป็นเพียงที่ที่คุณเพิ่มความคิดเห็นของคุณ - แต่สำหรับบางคนอาจยังสับสนโดยเฉพาะหากคุณไม่ได้กำหนดค่าการตั้งค่าตัวแก้ไขและคุณไม่ทราบว่าVIคืออะไร: จากนั้นคุณอาจตกใจ เพราะคุณจะคิดว่าคุณยังอยู่ใน GIT-Bash
ในกรณีนี้คุณอยู่ในโปรแกรมแก้ไขข้อความด้วยวิธีที่น่าสนใจในการจัดการกับสิ่งต่าง ๆ และชุดคำสั่งนี้อาจช่วยคุณได้เพื่อให้คุณสามารถผ่านการกระทำครั้งแรกของคุณจากนั้นกำหนดค่าตัวแก้ไขที่คุณคุ้นเคยหรือใช้เป็น โอกาสในการเรียนรู้วิธีใช้งาน
-m
ตัวเลือกที่จะกระทำการช่วยให้คุณป้อนกระทำข้อความในบรรทัดคำสั่ง:
git commit -m "my first commit"
เมื่อคุณสร้างคอมมิตใหม่คอมไพล์จะเริ่มโปรแกรมแก้ไขข้อความและเขียนบางสิ่งลงไป
การใช้โปรแกรมแก้ไขข้อความนี้มีจุดประสงค์เพื่อให้คุณเขียนข้อความคอมมิตที่จะเชื่อมโยงกับคอมมิตที่สร้างขึ้นโดยเฟชของคุณ
หลังจากเสร็จสิ้นให้บันทึกและออกจากโปรแกรมแก้ไขข้อความ 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"
ลองใช้ Escape ตามด้วย ZZ หลังจากพิมพ์ข้อความของคุณเสร็จแล้ว อย่างที่คนอื่นบอกเมื่อคุณเรียกใช้คำสั่งนั้นมันจะเรียกใช้โปรแกรมแก้ไขข้อความเพื่อป้อนข้อความลงไป ในกรณีของฉัน (OS X) มันคือ VI ซึ่งฉันคิดออกหลังจากขุดไปรอบ ๆ ในกรณีนี้ให้กด Escape เพื่อเข้าสู่โหมด "command" (ซึ่งตรงข้ามกับโหมด INSERT) ให้ป้อน ZZ ฉันแน่ใจว่ามีวิธีอื่นในการทำงานให้สำเร็จ แต่ก็ทำเพื่อฉัน การที่ฉันไม่เคยใช้ VI หรือ emac มันก็ไม่ชัดเจนสำหรับฉันและไม่ได้กล่าวถึงในคู่มือเริ่มต้นใด ๆ ที่ฉันใช้ หวังว่านี่จะช่วยได้
git commit
คำสั่งจะเปิดขึ้นบรรณาธิการที่ระบุไว้ในEDITOR
ตัวแปรสภาพแวดล้อมเพื่อให้คุณสามารถป้อนกระทำความคิดเห็น ในระบบ Linux หรือ BSD ค่านี้ควรเป็น vi ตามค่าเริ่มต้นแม้ว่าตัวแก้ไขใด ๆ ควรทำงานได้
เพียงป้อนความคิดเห็นของคุณและบันทึกไฟล์
ฉันสับสนเพราะฉันพยายามป้อนชื่อไฟล์ต่อจาก: w ใน VIM นั่นไม่ได้ทำให้เกิดการคอมมิต แต่ฉันกลับได้รับข้อความ "ยกเลิกการคอมมิตเนื่องจากข้อความคอมมิตว่างเปล่า" อย่าใส่ชื่อไฟล์หลัง: w. : w บันทึกไฟล์เป็น. git / COMMIT_EDITMSG ตามค่าเริ่มต้น จากนั้น: q เพื่อออกเพื่อดำเนินการคอมมิต คุณสามารถดูผลลัพธ์ด้วยบันทึกคอมไพล์
ตอนนี้ฉันเปลี่ยนโปรแกรมแก้ไขเป็น emacs แล้วทุกอย่างก็ใช้ได้ดี
แต่ก่อนที่ฉันจะตั้งค่านี้ "คอมมิต -a" ได้เปิด gedit แต่ก็ลงท้ายด้วย "การยกเลิกการคอมมิตเนื่องจากข้อความคอมมิตว่างเปล่า" การบันทึกไฟล์จาก gedit ไม่มีผล การตั้งค่าตัวแก้ไขด้วย "git config --global core.editor" gedit "" อย่างชัดเจนก็ได้ผลลัพธ์เช่นเดียวกัน
ไม่มีอะไรผิดปกติกับ emacs แต่ด้วยความอยากรู้ว่าทำไมสิ่งนี้ไม่ทำงานกับ gedit และมีวิธีใดบ้างที่จะทำให้มันใช้งานได้?
ขอบคุณ.
git config --global core.editor "gedit -s"
สำหรับผู้ที่ใช้ OS XI พบว่าคำสั่งนี้ทำงานได้ดี:
git config --global core.editor "open -t -W"
ซึ่งจะบังคับให้คอมไพล์เปิดโปรแกรมแก้ไขข้อความเริ่มต้น (textedit ในกรณีของฉัน) จากนั้นรอให้คุณออกจากแอปพลิเคชัน โปรดทราบว่าคุณต้อง "บันทึก" แล้วจึง "ออก" แก้ไขข้อความก่อนที่การคอมมิตจะผ่านไป มีคำสั่งอื่น ๆ ที่คุณสามารถเล่นได้ตามรายละเอียดในหน้านี้:
ห้องสมุดนักพัฒนาของ Apple - เปิดคำสั่ง
คุณยังสามารถลองgit config --global core.editor "open -e -W"
ถ้าคุณต้องการให้ git เปิด textedit เสมอไม่ว่าโปรแกรมแก้ไขเริ่มต้นจะเป็นอย่างไร
ใช่ตรวจสอบให้แน่ใจว่าคุณมีชุดเครื่องมือแก้ไขที่เหมาะสม ไม่แน่ใจว่าตัวแก้ไขเริ่มต้นของคุณจะเป็นอย่างไร แต่ถ้าเช่นฉันมันเป็นนาโน (จะพูดที่ไหนสักแห่งใกล้ด้านบนหลังจากที่คุณพิมพ์คอมมิต) คุณเพียงแค่พิมพ์ความคิดเห็นจากนั้นกด Ctrl-x เพื่อสิ้นสุด จากนั้นกด y ตามด้วย Enter เพื่อยืนยันการกระทำ
นอกจากนี้หากคุณต้องการดูรายการไฟล์แบบง่ายๆที่คุณจะต้องกระทำแทนที่จะเป็นรายการที่แตกต่างกันมากให้ลองทำก่อน
git diff --name-only
เมื่อทำการควบคุมการแก้ไขคุณควรอธิบายเสมอว่าการเปลี่ยนแปลงที่คุณทำคืออะไร โดยปกติแล้วในครั้งแรกที่คุณมีความคิดเห็นเช่น "Initial Commit"
อย่างไรก็ตามในระยะยาวคุณต้องการแสดงความคิดเห็นที่ดีสำหรับการคอมมิตแต่ละครั้ง คุณจะต้องการบางอย่างในรูปแบบ:
เพิ่มฟีเจอร์ทดลอง x
X จะเพิ่มประสิทธิภาพของคุณลักษณะ Y ในเงื่อนไข Z หากคุณต้องการให้ X เปิดใช้งานด้วยสวิตช์ -x หรือ --feature-eks ที่อยู่นี้ขอคุณสมบัติ # 1138
เนื่องจากยังใหม่กับ Terminal ด้วยเช่นกัน "Escape แล้ว ZZ" ก็ใช้ได้ผลสำหรับฉันฉันมีปัญหานี้มาหลายเดือนแล้วและยังหาวิธีแก้ไขไม่ได้
ขอบคุณ TheGeoff สำหรับคำแนะนำง่ายๆของคุณ!
ต่อไปนี้อาจเป็นวิธีที่ง่ายที่สุดในการดำเนินการเปลี่ยนแปลงทั้งหมด:
git commit -a -m "Type your commit message here..."
แน่นอนว่ามีวิธีที่ละเอียดกว่าในการกระทำ แต่นั่นควรจะช่วยให้คุณเริ่มได้
--global
เพื่อเปลี่ยนค่าเริ่มต้นหรือไม่?