ความผิดพลาดเป็นเรื่องปกติ เราทุกคนสร้างมันขึ้นมา นั่นเป็นเหตุผลที่พวกเขาใส่ยางลบบนดินสอ และไม่ต่างอะไรกับเครื่องมืออย่าง 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 ล่าสุดทั้งหมด และคุณสามารถแก้ไขข้อความได้ตามต้องการ