Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Git Revert Commit:คำแนะนำทีละขั้นตอน

คำสั่ง 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 เหมือนนักพัฒนามืออาชีพ!