คำสั่ง git revert จะเลิกทำการคอมมิต ดังนั้นคุณสามารถส่งคืนที่เก็บไปยังคอมมิตก่อนหน้าได้ แทนที่จะลบการคอมมิต การย้อนกลับจะสร้างการคอมมิตใหม่ที่จะย้อนกลับการเปลี่ยนแปลงของการคอมมิตที่เผยแพร่ ซึ่งจะคงค่าคอมมิชชันเริ่มต้นไว้เป็นส่วนหนึ่งของประวัติของโปรเจ็กต์
เมื่อคุณทำงานกับที่เก็บ Git คุณอาจสร้างคอมมิตด้วยโค้ดที่ไม่พร้อมที่จะเก็บไว้ในที่เก็บ Git โดยไม่ได้ตั้งใจ
นั่นคือที่มาของคำสั่ง git revert คำสั่ง git revert อนุญาตให้คุณ undo
คอมมิตเพื่อให้คุณสามารถส่งคืนที่เก็บไปยังคอมมิตก่อนหน้าได้
บทช่วยสอนนี้จะอธิบายพร้อมตัวอย่าง การคืนค่ารหัสและวิธีใช้คำสั่ง git revert เพื่อเปลี่ยนรหัสของคุณกลับคืน เมื่ออ่านบทช่วยสอนนี้จบแล้ว คุณจะเป็นผู้เชี่ยวชาญในการเปลี่ยนกลับโค้ดโดยใช้คำสั่ง git revert commit
การคืนค่ารหัสของคุณ
บางครั้ง เมื่อคุณทำงานกับที่เก็บ Git คุณอาจสังเกตเห็นว่าคุณได้ทำผิดพลาดในการคอมมิตของคุณ
ตัวอย่างเช่น สมมติว่าคุณเพิ่งเสร็จสิ้นการทำงานกับคุณลักษณะใหม่ และคุณตระหนักว่ามีจุดบกพร่องที่ต้องแก้ไข เมื่อคุณส่งการแก้ไขจุดบกพร่อง คุณจะสังเกตเห็นด้วยว่าคุณได้กำหนดไดเรกทอรีการทำงานสำหรับคุณลักษณะใหม่ที่คุณกำลังพัฒนา
ซึ่งหมายความว่าคอมมิตของคุณมีทั้งการแก้ไขจุดบกพร่องและคุณลักษณะใหม่ ซึ่งอาจทำให้ผู้ทำงานร่วมกันคนอื่น ๆ ในโครงการไม่เข้าใจ แทนที่จะคอมมิตการเปลี่ยนแปลงทั้ง 2 อย่างพร้อมกัน คุณต้องการรวมการเปลี่ยนแปลงทั้งสองแบบแยกกัน
ในสถานการณ์สมมตินี้ คุณอาจต้องการเปลี่ยนที่เก็บของคุณกลับเป็นสถานะเดิมก่อนที่คุณจะส่งการคอมมิต นี่จะทำให้คุณมีโอกาสอีกครั้งในการผลักดันการคอมมิตของคุณใน git โดยการคืนค่าการคอมมิตล่าสุด
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
คำสั่งเปลี่ยนกลับ Git
คำสั่ง git revert อนุญาตให้คุณ undo
กระทำ อย่างไรก็ตาม แทนที่จะลบการคอมมิตออกจากโปรเจ็กต์ คำสั่ง git revert จะค้นหาการเปลี่ยนแปลงระหว่างการคอมมิตสองรายการล่าสุดและสร้างการคอมมิตใหม่ที่ย้อนกลับการเปลี่ยนแปลงเหล่านั้น
คำสั่ง git revert มีประโยชน์เพราะช่วยให้คุณสามารถรักษาประวัติโครงการของที่เก็บได้ แทนที่จะลบการคอมมิตทั้งหมด มันทำให้คุณสามารถเปลี่ยนที่เก็บกลับเป็นคอมมิตอื่นได้ ดังนั้นคุณจึงยังคงเก็บบันทึกที่แม่นยำของทุกคอมมิตที่คุณพุชไปยังที่เก็บได้
คุณควรใช้คำสั่ง git revert ในสถานการณ์ที่คุณต้องการย้อนกลับการคอมมิทครั้งล่าสุดของคุณ แทนที่จะทำการเปลี่ยนแปลงที่คุณต้องทำกับการคอมมิตล่าสุดด้วยตนเอง คุณสามารถเปลี่ยนการคอมมิตและพุชอันใหม่ไปที่ฐานโค้ดได้
ไวยากรณ์สำหรับคำสั่ง git revert มีดังต่อไปนี้:
เปลี่ยน git กลับ
มาดูตัวอย่างกันเพื่อแสดงให้เห็นว่าคำสั่งนี้ทำงานอย่างไร
ตัวอย่างการคืนค่า Git
บนเครื่องของเรา เรามีที่เก็บตัวอย่างที่มีไฟล์เดียว:README.md เราเพิ่งทำการเปลี่ยนแปลงไฟล์ที่เราต้องการที่จะส่งไปยังคอมมิต เราสามารถทำได้โดยใช้รหัสนี้:
git commit -m "docs:อัปเดต README.md ด้วยข้อมูลผู้แต่ง"
เมื่อดำเนินการคำสั่งนี้จะสร้างการคอมมิตด้วยข้อความ docs: Update README.md with author info
. นอกจากนี้เรายังเพิ่งทำการเปลี่ยนแปลงอีกครั้งในไฟล์ README.md ซึ่งเรายอมรับกับ repo ของเราโดยใช้คำสั่งนี้:
git commit -m "docs:อัปเดตลำดับผู้เขียนตามการมีส่วนร่วม"
คำสั่งนี้สร้างการคอมมิตอื่นในที่เก็บของเรา หากเราใช้คำสั่ง git log –pretty=oneline (ซึ่งแสดงรายการคอมมิตของเรา) เราจะเห็นว่ามีสองคอมมิตในประวัติ repo ของเรา:
6f52d877873e7d3b52c929647384dfdf2488da22 (HEAD -> master) docs:อัปเดตลำดับผู้เขียนตามการบริจาค57d763663e619088159bb7629243456f88feab79 docs:อัปเดต README.md พร้อมข้อมูลผู้แต่ง
ทีนี้ สมมติว่าเราตัดสินใจว่าเราต้องการคืนค่าการคอมมิตล่าสุดของเรา เราทราบดีว่าลำดับที่เราเขียนผู้เขียนในไฟล์ README.md นั้นไม่ถูกต้อง ดังนั้นเราจึงจำเป็นต้องเปลี่ยนที่เก็บของเรากลับเป็นสถานะเดิมก่อนที่เราจะทำการส่งข้อมูลครั้งล่าสุด
เราสามารถทำได้โดยใช้คำสั่งนี้:
git กลับ HEAD
เมื่อเราเรียกใช้คำสั่งนี้ โปรแกรมแก้ไขข้อความเริ่มต้นของเราจะเปิดขึ้นและแจ้งให้เราสร้างข้อความสำหรับการคอมมิตของเรา ในคำสั่งนี้ HEAD หมายถึงการคอมมิตล่าสุด ในตัวอย่างของเรา เราพิมพ์ข้อความ revert author order commit
. จากนั้น คำสั่งจะคืนค่าต่อไปนี้:
[master b66c29a] ยกเลิกคำสั่งของผู้เขียนที่คอมมิต "docs:อัปเดตลำดับของผู้เขียนตามการมีส่วนร่วม" มีการเปลี่ยนแปลง 1 ไฟล์ การลบ 1 รายการ (-)
เมื่อเรารันคำสั่ง git log –pretty=oneline เราจะเห็นว่ามีการคอมมิตใหม่แล้ว:
b66c29a8c4c226fa9ae8cd8f9e086c0a73e6ecfe (HEAD -> master) ยกเลิกคำสั่งผู้เขียน "เอกสาร:อัปเดตลำดับของผู้เขียนตามการบริจาค"6f52d877873e7d3b52c929647384dfdf2488da22 เอกสาร:อัปเดตลำดับของผู้เขียนตามจำนวนผู้บริจาคที่เขียนโดยผู้บริจาคตามจำนวนผลงานที่เขียนไว้โดยเรียงตามการบริจาค"6f52d877873e7d3b52c929647384dfdf2488da22 docs:อัปเดตลำดับของผู้เขียนที่เขียนโดยผู้แต่งตามคำเสนอแนะของ :19079298876pree57:ประวัติการคอมมิตของเราตอนนี้แสดงรายการการคอมมิตสามรายการ แทนที่จะลบการคอมมิตล่าสุด คำสั่ง git revert จะสร้างคอมมิตใหม่ที่ยกเลิกการเปลี่ยนแปลงของการคอมมิตครั้งก่อน ซึ่งหมายความว่าเรายังมีประวัติการคอมมิตทั้งหมดที่เราส่งไปยังที่เก็บของเรา
คำสั่ง git revert จำเป็นต้องมีการอ้างอิงคอมมิตเพื่อดำเนินการ ในกรณีนี้ เราระบุ HEAD ซึ่งเปลี่ยนที่เก็บของเราเป็นการคอมมิตล่าสุด
หากเราต้องการเปลี่ยนกลับไปเป็นการคอมมิตอื่น เราสามารถระบุค่าแฮชสำหรับคอมมิตนั้นได้ ดังนั้น แทนที่จะระบุ
HEAD
ในคำสั่งของเรา เราสามารถใช้ hash ที่ส่งคืนโดยคำสั่ง git log เพื่อเปลี่ยนกลับเป็นการกระทำที่เราเลือก ต่อไปนี้คือตัวอย่างคำสั่งที่เราจะใช้เพื่อเปลี่ยนที่เก็บกลับเป็นคำสั่งเฉพาะ:git revert 57d763663e619088159bb7629243456f88feab79คำสั่งนี้จะคืนค่าที่เก็บของเราเป็นการคอมมิตด้วยแฮช SHA
57d763663e619088159bb7629243456f88feab79
. ในที่เก็บนี้ แฮชนั้นสอดคล้องกับคอมมิตแรกที่เราทำกับ repo ของเราเปลี่ยน Git กับรีเซ็ต
คำสั่ง revert และ reset ใช้เพื่อเลิกทำการเปลี่ยนแปลงจากการคอมมิตก่อนหน้านี้ในที่เก็บ Git อย่างไรก็ตาม คุณควรทราบว่าคำสั่งเหล่านี้มีลักษณะการทำงานที่แตกต่างกันเล็กน้อย
การดำเนินการบรรทัดคำสั่ง git revert ใช้เพื่อยกเลิกการคอมมิตก่อนหน้า เมื่อคุณเรียกใช้ git revert การเปลี่ยนแปลงระหว่างสองคอมมิตจะถูกยกเลิก จากนั้น คอมมิทใหม่จะถูกสร้างขึ้นซึ่งมีรหัสใน repo ของคุณหลังจากที่ยกเลิกการเปลี่ยนแปลงแล้ว
ในทางกลับกัน คำสั่ง git reset เปลี่ยนที่เก็บกลับเป็นสถานะก่อนหน้าโดยลบการคอมมิตทั้งหมดระหว่างช่วงที่กำหนด ดังนั้น หากคุณรัน git reset และอ้างอิงการคอมมิตครั้งก่อน การคอมมิตทั้งหมดระหว่างสถานะปัจจุบันของที่เก็บและการคอมมิตนั้นจะถูกลบออก
การคืนค่าคอมมิตมักจะดีกว่าการรีเซ็ตคอมมิต สาเหตุหลักเป็นเพราะ git revert ไม่ได้เปลี่ยนประวัติของโปรเจ็กต์ของคุณ วิธีนี้ช่วยให้คุณซึ่งเป็นผู้พัฒนาสามารถเก็บบันทึกการเปลี่ยนแปลงทั้งหมดที่ทำกับโปรเจ็กต์ได้อย่างแม่นยำ
นอกจากนี้ คำสั่ง git revert ยังให้คุณเปลี่ยนกลับเป็นการคอมมิตแต่ละรายการ ณ จุดหนึ่งในประวัติของที่เก็บของคุณได้ ในทางกลับกัน คำสั่ง git reset จะทำงานเฉพาะจากการคอมมิตที่คุณเปิดอยู่เท่านั้น
ซึ่งหมายความว่า หากคุณต้องการเลิกทำการคอมมิตในประวัติของที่เก็บของคุณ คุณจะต้องลบการคอมมิตทั้งหมดก่อนถึงจุดนั้น จากนั้นคอมมิตการเปลี่ยนแปลงของคุณ ซึ่งทำให้ยากต่อการเก็บบันทึกประวัติที่ถูกต้องของที่เก็บของคุณ ซึ่งเป็นส่วนสำคัญในการใช้เครื่องมือควบคุมแหล่งที่มาอย่าง Git อย่างมีประสิทธิภาพ
บทสรุป
คำสั่ง git revert ช่วยให้คุณสามารถเลิกทำการเปลี่ยนแปลงที่คุณทำกับที่เก็บโค้ดได้ตั้งแต่การคอมมิตเฉพาะ แทนที่จะลบการคอมมิต คำสั่ง git revert จะระบุการเปลี่ยนแปลงระหว่างการคอมมิตปัจจุบันและการคอมมิตก่อนหน้า และสร้างการคอมมิตใหม่เพื่อย้อนกลับการเปลี่ยนแปลงเหล่านั้น
บทช่วยสอนนี้กล่าวถึงวิธีใช้คำสั่ง git revert เพื่อเปลี่ยนการคอมมิตใน Git ตอนนี้คุณพร้อมที่จะเริ่มการคืนค่าคอมมิตโดยใช้คำสั่ง git revert commit เหมือนนักพัฒนามืออาชีพ!