มีวิธีในการแก้ไขการกระทำที่ไม่มีvi(หรือของคุณ$EDITOR) โผล่ขึ้นมาพร้อมกับตัวเลือกในการแก้ไขข้อความการส่งข้อความของคุณ แต่เพียงแค่นำข้อความก่อนหน้านี้มาใช้ใหม่หรือไม่
มีวิธีในการแก้ไขการกระทำที่ไม่มีvi(หรือของคุณ$EDITOR) โผล่ขึ้นมาพร้อมกับตัวเลือกในการแก้ไขข้อความการส่งข้อความของคุณ แต่เพียงแค่นำข้อความก่อนหน้านี้มาใช้ใหม่หรือไม่
คำตอบ:
ตั้งแต่รุ่น 1.7.9 git คุณสามารถใช้git commit --amend --no-editเพื่อรับผลลัพธ์ของคุณได้
โปรดทราบว่านี่จะไม่รวมข้อมูลเมตาจากการกระทำอื่น ๆ เช่นการประทับเวลาที่อาจมีหรือไม่มีความสำคัญสำหรับคุณ
git commit -C HEAD --amendจะทำในสิ่งที่คุณต้องการ -Cตัวเลือกที่จะใช้เวลาเมตาดาต้าจากที่อื่นกระทำ
git config --global alias.amend 'commit --amend -C HEAD'ได้ จากนั้นคุณสามารถใช้git amendเป็นทางลัด
--amendแม้ว่าจะไม่มีตัวเลือกอื่น ๆ ก็ตามก็ยังคงรักษาวันที่ของผู้เขียนไว้ (แต่เปลี่ยนวันที่ส่ง) เช่นนี้ฉันได้ลบความคิดเห็นเก่าของฉัน
—amendที่คุณไม่จำเป็นต้องใช้ คุณสามารถสร้างการคอมมิทใหม่ แต่ใช้ข้อความเดียวกับคอมมิชชันก่อนหน้า นั่นอาจจะไม่เป็นประโยชน์ แต่ข้อความคอมมิทเริ่มต้นของฉันเมื่อฉันเพิ่งบันทึกงานของฉันโดยไม่ต้องคิดถึงข้อความคอมมิทที่ดีฉันจะนำข้อความมาใช้ซ้ำ—message=“Work in progress (untested)”
อื่น ๆ (โง่) ความเป็นไปได้คือการgit commit --amend <<< :wqถ้าคุณได้มี vi (M) $EDITORเป็น
... <<< ZZอาจจะพิมพ์ได้น้อยลง)
... <<< :x:)
หากต้องการขยายคำตอบที่ยอมรับคุณสามารถทำได้:
git commit --amend --no-edit -a
เพื่อเพิ่มไฟล์ที่มีการเปลี่ยนแปลงในปัจจุบัน
ใช้คำตอบที่ยอมรับเพื่อสร้างนามแฝง
oops = "!f(){ \
git add -A; \
if [ \"$1\" == '' ]; then \
git commit --amend --no-edit; \
else \
git commit --amend \"$@\"; \
fi;\
}; f"
จากนั้นคุณสามารถทำได้
git oops
และมันจะเพิ่มทุกอย่างและแก้ไขโดยใช้ข้อความเดียวกัน
หรือ
git oops -m "new message"
เพื่อแก้ไขการแทนที่ข้อความ