git push ผิดพลาดต้องทำอย่างไร?

Phong 3DS
PAM Developer Expert
1 min readAug 4, 2019

เคยประสบปัญหานี้ใช่ไหม? แก้งานเสร็จแล้ว push งานขึ้น remote แล้ว หลังจาก ci/cd deploy งานเราขึ้น site staging ปรากฏว่ามี bug บังเกิด ทำให้ต้อง rollback งานที่ push ขึ้นไป ในกรณีเช่นนี้ คำถามต่อมาที่มักจะเกิดขึ้นก็คือ

ใช้ git <command> อะไรดี? ในการ rollback change ที่ push ขึ้นไปแล้ว

ในสถานการณ์เช่นนี้ เรามี 2 options ให้ได้เลือกกันครับนั่นคือ

  1. ถ้า bug เกิดจากบาง commit ที่ผิด (ซึ่งอาจจะประกอบไปด้วยหลายๆไฟล์)

สิ่งที่เราจะทำได้คือ

# git revert <commit-id-ที่ต้องการ-undo>

เมื่อ run command นี้แล้ว git จะทำการสร้าง commit ใหม่ โดยจะ undo สิ่งต่างๆที่เกิดขึ้นใน commit นั้นๆให้ โดยถ้าเรา git push commit ใหม่ขึ้นไปก็จะได้สิ่งที่เราต้องการ

2. ถ้า bug เกิดจากบาง file เท่านั้นที่ผิด

เราจะสามารถย้อนอดีตไฟล์เหล่านั้นกลับไปที่ version ที่ต้องการได้โดย

# git checkout <commit-id-ที่ต้องการย้อนไฟล์นั้นกลับไป> ชื่อไฟล์ที่ต้องการ undo

เมื่อ run command นี้แล้ว git จะทำการย้อนอดีตไฟล์นี้ไปที่ version ที่ต้องการ โดยเราจะต้อง git add และ git commit ไฟล์นั้นอีกครั้งหลังจากแก้ไข bug แล้ว และ push commit ที่สร้างใหม่ขึ้นมา ก็จะได้สิ่งที่เราต้องการ

3. ถ้า bug นั้นเกิดจากหลาย commit และหลาย file ประกอบกัน

ก็ไม่ยากครับ ให้ทำ (1) และ (2) หลายๆครั้งตามจำนวนของ commit และ file ที่ต้องการ undo

สองวิธีที่กล่าวมานี้เป็นวิธีที่ Safe ครับ นั่นหมายความว่าจะไม่มีการ rewrite history ของ git จึงเหมาะกับการที่นำไปใช้กับการแก้ไข remote branch ซึ่ง ต่างกับ command จำพวก git branch -f <commit-name> และ git push -force ซึ่งอาจจะทำให้ commit ของเพื่อนร่วมทีมหายไปได้ครับ

--

--