Git: แก้ไขข้อความยืนยันที่มีอยู่

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

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

แก้ไขการคอมมิตล่าสุด ยังไม่ได้ส่งไปยังระยะไกล

นี่เป็นกรณีที่ง่ายที่สุด เนื่องจากไม่จำเป็นต้องแก้ไขที่เก็บระยะไกล คุณเพียงแค่ต้องแก้ไขของคุณเอง ในกรณีนี้ คุณสามารถใช้คำสั่งต่อไปนี้:

$ git commit --amend

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

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

$ git commit --amend -m "Added a new file"

การทำเช่นนี้จะไม่เปิดตัวแก้ไข แต่จะแก้ไขข้อความที่คอมมิตทันทีแทน

แก้ไขการคอมมิตล่าสุด ผลักไปที่ระยะไกล

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

ขั้นตอนแรกคือการแก้ไขการคอมมิตล่าสุด เช่นเดียวกับที่เราทำในส่วนก่อนหน้า:

$ git commit --amend -m "Added a new file"

จากนั้น คุณต้องส่งการเปลี่ยนแปลงเหล่านี้ไปยังที่เก็บระยะไกล อย่างไรก็ตาม ต้องทำโดยใช้ --force ธง.

$ git push <remote> <branch> --force

เราจำเป็นต้องทำเช่นนี้เพื่อเขียนทับที่เก็บระยะไกลด้วยสถานะโลคัลของเราเอง

พึงระวังว่าการบังคับดัน คุณจะ สูญเสีย คอมมิตใด ๆ บนสาขาท้องถิ่นที่คุณยังไม่มีในสาขาท้องถิ่นของคุณ ดำเนินการด้วยความระมัดระวัง!

ดูคู่มือเชิงปฏิบัติสำหรับการเรียนรู้ Git ที่มีแนวทางปฏิบัติที่ดีที่สุด มาตรฐานที่ยอมรับในอุตสาหกรรม และเอกสารสรุปรวม หยุดคำสั่ง Googling Git และจริงๆ แล้ว เรียน มัน!

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

ใช้ Rebase แบบโต้ตอบ

อีกทางเลือกหนึ่งซึ่งยืดหยุ่นกว่าโซลูชันก่อนหน้านี้ที่อธิบายคือการใช้ rebase แบบโต้ตอบ การทำเช่นนี้ทำให้คุณสามารถตรวจสอบ N คอมมิทล่าสุดและทำการเปลี่ยนแปลงได้ รวมถึงการหยิบ การสควอช ฯลฯ

ในการเริ่มการรีเบส คุณสามารถใช้คำสั่งต่อไปนี้:

$ git rebase -i HEAD~n

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

$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file



















คุณจะเห็นรายการคอมมิต N ล่าสุดทั้งหมด และคุณสามารถแก้ไขข้อความได้ตามต้องการ

ประทับเวลา:

เพิ่มเติมจาก สแต็ค