git diff before merge

ที่ Omise เราใช้ Github Enterprise ในการทำงาน ซึ่ง flow การทำงานคร่าว ๆ คือ

  • มี branch develop ไว้รวมของที่กำลังพัฒนาอยู่แล้วยังไม่ได้ ขึ้น production
  • เวลามี task ใหม่ให้แตก branch สำหรับ task นั้น
  • เวลาทำเสร็จให้เปิด PR (Pull Request) เพื่อให้คนอื่นช่วย Review
  • เมื่อมีคน Approve ตั้งแต่ 2 คนขึ้นไปก็ merge กับ develop ได้

ทีนี้ตอน Review เนี่ย เราก็จะเปิดเข้าหน้าของ PR แบบเดียวกับ Github ทั่วๆไปเลย แล้วก็ดู Files changed แบบนี้

ทีนี้เนี่ย บางทีตรง Files changed มันเยอะไง ดูบนเว็บบางทีทำเอา browser ค้างไปเลยก็มี วันนี้เลยลองหาวิธี แล้วก็ได้คนในทีมแนะนำมาท่านึงคือใช้ git diff และ git merge-base ช่วย

git merge-base

คำสั่งนี้เนี่ยช่วยให้เราหา id ของ commit สุดท้าย ที่ 2 branch นั้นมีเหมือนๆกัน เพื่อเป็นจุดที่จะเอามา diff กับ HEAD ของ branch ที่เปิด PR วิธีใช้ก็ทำแบบนี้

git merge-base develop HEAD

ตัวอย่างนี้คือให้หา branch ที่เป็นจุดตัดระหว่าง develop กับ HEAD จะได้ id ออกมาประมาณนี้ a0cc09679b9e61e8c71b078de2db420b46c6e60d

เสร็จแล้วเราก็ใช้ git diff หาส่วนต่างกับ HEAD เช่น

git diff a0cc09679b9e61e8c71b078de2db420b46c6e60d HEAD

แต่ขี้เกียจทำทีละอัน ก็เรียกทีเดียวได้แบบนี้ ก็ได้เช่นกัน

git diff `git merge-base develop HEAD`
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.