วันนี้ทำการสรุปเรื่องการใช้งาน Git ไว้
เพื่อใช้สำหรับการทำ workshop เกี่ยวกับการจัดการ version ของ code
จึงทำให้เห็นว่ามี tip ที่น่าสนใจ และ ใช้งานบ่อย ๆ ไว้

เรื่องแรกที่มักจะบอกเสมอคือ อย่า Force Push !!

ถ้าไม่จำเป็นจริง ๆ เช่น ต้องการให้พังก็ force ไป
เพราะว่า การ force push นั้น
เป็นการเปลี่ยนแปลง history ของ commit ใน remote repository
ดังนั้นจะทำให้คนอื่น ๆ มีปัญหาไปด้วย
อาจจะมาจากการ rebase หรือ squash commit

ดังนั้นถึงระวังไว้
ยิ่งถ้าใครสาย UI จะพบว่าแค่ไป check ที่ force push ก็ไปเลยนะ !!

ถ้าจะทำจริง ๆ ทางเลือกที่เจ็บน้อยลงคือ Force with lease
ซึ่งสามารถทำการ alias จาก force push มาเป็น Force with lease ได้

เรื่องที่สอง ถ้าขี้เกียจกำหนด remote branch ก็ใช้ upstream ไป

$git push -u origin your-branch

เรื่องที่สาม ตั้วชื่อ branch ให้มันรู้เรื่องและเข้าใจ ตรงกับสิ่งที่ทำ

ชื่อ branch ที่ไม่ควรมี

  • feature01, 02, 03
  • ชื่อของเราเอง !!

เพิ่มเติมคือ commit message เช่นเดียวกัน
มันมีใส่ทั้ง subject และ description นะ
ไม่ใช่มีแต่ update update update
ไม่ใช่มีแต่ fixed fixed fixed

เรื่องที่สี่ สำหรับสาย feature branch ถ้า merge ไปแล้วก็ลบทิ้งไปซะ

มาก branch มากความ
แต่หลายคนบอกว่าหลีกเลี่ยงไม่ได้
แต่เมื่อคุณทำการ merge ไปยัง branch หลักเรียบร้อย
แล้วควรลบ feature branch นั้น ๆ ไปซะ
จะเก็บไว้ทำซากอะไร !!
ยิ่งเป็น local branch ยิ่งควรลบ

หรือถ้ามีคนลบ branch จาก remote repository แล้ว
เมื่อเราทำการ fetch มา แล้วทำการลบที่ local repository เลย
ให้ทำการ config ดังนี้

$git config fetch.prune true

เรื่องที่ห้า สายหลบ หรือ การ stash เพื่อเก็บการเปลี่ยนแปลงที่ local ไว้

ก่อนที่จะทำการ pull หรือเปลี่ยน branch มักจะใช้ stash
ดังนั้นการใช้งานควรใส่ชื่อหรือ stash message ที่สื่อถึงก่ีเปลี่ยนแปลงเหล่านั้นไว้ด้วย
กฎกติกาคือ ควรมี stash ได้เพียง 1 ตัวเท่านั้น

เรื่องที่หก Rebase vs Merge

ปกติแล้วนั้น git จะทำการ merge ให้อัตโนมัติ
สำหรับการ pull การเปลี่ยนแปลงมาที่ local branch repository
ซึ่งจะทำการสร้าง commit สำหรับการ merge ขึ้นมา
ทำให้หลาย ๆ คนอาจจะไม่พอได้ผลการทำงาน

ดังนั้น เพื่อความ clean ของ commit ใน branch ต่าง ๆ
แนะนำให้ใช้การ rebase แทน
แต่ก็ระวังด้วย เพราะว่า จะทำให้เกิดปัญหาในข้อหนึ่ง

สามารถเปลี่ยนค่า default ของการ pull เป็น rebase ดังนี้

$git config pull.rebase true

อีกอย่าง ผมมักจะทำ squash ก่อน rebase เสมอ
เป็นการยุบหรือตกแต่ง commit ให้สวยงาม
เช่นจาก 20 commit รวมให้เหลือแค่ 5 commit
ก็ได้จะทำให้เราได้ release note สวย ๆ

สามารถกำหนดค่า default ของการ rebase ให้เป็น squash ได้เลย

$git config rebase.autosquash true

เรื่องที่เจ็ด ต้องการเปลี่ยน commit message ใน commit ล่าสุดด้วย amend

$git commit --amend

หรือลืม add file ใน commit ล่าสุด ก็เพิ่มเข้าไป

$git add somefile
$git commit --amend

เรื่องสุดท้าย ลบ file และ folder ที่ untracked ทิ้งไป ด้วย git clean -d –force

Tags:,,