มีวิธีในการแก้ไขการกระทำที่ไม่มี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"
เพื่อแก้ไขการแทนที่ข้อความ