วันนี้เจอประสบการณ์ไม่ค่อยดีสำหรับการใช้งาน git ด้วยคำสั่ง
$git push --force
ผลที่ตามมาก็ไฟไหม้สิครับ
ทั้ง code หาย
ทั้ง commit history ต่าง ๆ หายไปหมด
งานของเราอาจจะดี แต่ของคนอื่นหายหมด
ภาพรวมคือ งานเข้าสิครับ !!
เป็นภัยต่อชีวิต เป็นพิษต่อทีมมาก ๆ
คำถามที่น่าสนใจคือ ทำไมเราต้องใช้ git push force ด้วยล่ะ ?
ตอบง่าย ๆ คือ มัน(มัก)ง่ายไงล่ะ
ซึ่งมันเกิดจากเราทำอะไรผิดพลาดก็ไม่รู้
และส่งผลให้เราไม่สามารถ push code ขึ้นไปยัง repository ได้
ซึ่งเราสามารถใช้งานผ่านคำสั่งต่าง ๆ ของ git เพื่อแก้ไขได้เช่น
- git commit –amend
- git rebase
- git reset
แต่บางครั้งเมื่อใช้สิ่งต่าง ๆ เหล่านี้
ก็ไม่สามารถ push code ขึ้นไปได้
นั่นคือปัญหาเรื่องของ commit history นั่นเอง
ดังนั้นเราจึง git push force มันไปเลย !!
ง่าย ๆ สบาย ๆ แต่พังกระจาย
ถ้าไม่มีการสื่อสารที่ดีพอ
หรือบางครั้งขี้เกียจ merge code ที่มันขัดแย้งกันเยอะ
ดังนั้นจึงให้ตัวเราเองเป็นที่ตั้ง
จากนั้น git push force มันไปเลย !!
ดังนั้นก่อนอื่นต้องทำความเข้าใจว่าผลที่ตามมาจากการกระทำมีอะไรบ้าง ?
มันจะเขียนทับการเปลี่ยนแปลงทั้งหมดเลยนะ
ดังนั้นคุยกับทีมก่อนว่า ไม่มีใครที่จะเปลี่ยนแปลงอีกแล้วนะ
ทำการ update สิ่งต่าง ๆ ให้เรียบร้อย
แก้ไขสิ่งต่าง ๆ ให้เรียบร้อย
จากนั้นจึงทำการ git push force
จึงจะปลอดภัยมากขึ้น
แต่ถ้าต้องการใช้จริง ๆ แนะนำให้ใช้ git push – -force-with-lease ดีกว่านะครับ
ซึ่งมันจะปลอดภัยต่อชีวิตอย่างมาก
สุดท้ายแล้วแนะนำให้ใช้ git push force เป็นทางเลือกสุดท้ายเท่านั้น
เช่นการลบ commit history ที่มีข้อมูลที่เป็นความลับ
หรือเป็นสิ่งที่ไม่ต้องการให้มีจริง ๆ
ซึ่งมันบ่งบอกว่า repository ของคุณมันแย่มาก ๆ
หรือกระบวนการทำงานต้องปรับปรุงได้แล้วนะ
Reference Websites
https://robots.thoughtbot.com/git-push-force-with-lease
https://developer.atlassian.com/blog/2015/04/force-with-lease/