รู้จัก Git alias ไว้ ได้ใช้แน่
Git เป็นเครื่องมือที่ developer ต้องใช้ได้ และใช้เป็น มันมีคำสั่งอะไรมากมายให้เราเลือกใช้เพื่อจัดเก็บ source code ของเราให้เป็นที่เป็นทาง และเป็นระบบ ทีนี้ มันก็ยังมี option หรือ flag ให้หยิบอีกเพียบ จนบางทีเราเสียเวลามานั่งพิมพ์คำสั่งพร้อม flag ยาวเหยียดกว่าจะเสร็จสักหนึ่งขั้นตอน
ดังนั้นใน blog นี้ ผมเลยขอแชร์คำสั่งของ git ที่คิดว่าทุกคนจะต้องใช้บ่อยๆ กัน เพื่อทำให้งานมันเสร็จไวขึ้น สักนิดก็ดีนะ
Git alias
สั้นๆ Git alias มันก็คือคำสั่งย่อ ที่ให้เรากำหนดเองได้เลย อารมณ์มาโคร (macro) น่ะฮะ เช่น คำสั่ง abc หมายถึงให้ทำตามนี้นะ อะไรแบบนี้ ตั้งชื่อและกำหนดว่าให้ทำอะไรบ้างได้เอง
กำหนด Git alias ยังไง
Official document เขียนเอาไว้ว่า ถ้าเราอยากจะเพิ่มหรือเปลี่ยน Git alias ให้ใช้แบบนี้
git config --global alias.<alias_name> '<full commands>'
ตรง alias name เราก็ใส่ไปเลย เป็นของเราเองว่าอยากให้ชื่อเป็นอะไร
ส่วนตัวผมถนัดแก้ค่าโดยตรงที่ file ~/.gitconfig
มากกว่าฮะ ซึ่งวิธีนี้ เราจะไปเพิ่ม ลด หรือแก้ไขใต้ section [alias]
พร้อมกับกำหนด alias name ด้วย 3 ตัวอักษรให้จำง่ายๆ พิมพ์ไวๆ
[user]
name = abc
email = abc@users.noreply.github.com
[alias]
alias_name = full_commands
แล้วจะใช้ Git alias ยังไง
เมื่อเรากำหนด Git alias มักจะเป็น action verb เช่น checkout
หรือ commit
ทำนองนี้นะ เวลาเรียกใช้ ก็ขึ้นต้นด้วย git
แล้วตามด้วย alias
ตัวอย่างเช่น เรากำหนด alias ไว้ว่า ci = commit
พอเราจะใช้ แทนที่จะพิมพ์ว่า git commit -m "test"
ก็พิมพ์แค่ git ci -m "test"
เท่านั้นเองฮะ เหมือนแทนที่คำไปเลย
ตัวอย่าง Git alias ของผม
เอาล่ะ ต่อไปนี้คือ alias ของผมเอง เป็นอันที่ผมใช้บ่อยมากๆ
pull and clean
alias อันนี้ เอาไว้ fetch และ pull all ตามด้วย clear (prune) branch ที่ลบไปจาก remote ไม่ให้มันรกที่ local
al1 = "!f() { git fetch --all && git pull --all && git remote prune origin; }; f"
# usage
git al1
add, commit, and push
ทำงานเสร็จแล้วก็ push ขึ้น remote แต่แทนที่เราจะต้องมานั่งพิมพ์ 3 ขั้นตอน สู้รวบมาเป็นคำสั่งเดียวสั้นๆ ไม่ดีกว่าเหรอ?
al2 = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
# usage
git al2 "commit message"
create a new branch and checkout
โดยทั่วไป เวลางอก feature ใหม่ ก็ต้องมาแตก branch ใหม่ แล้วก็ต้องมาตั้งค่า set upstream ทุกครั้ง เลยใช้ alias นี้ทำหน้าที่แทนฮะ
al3 = "!f() { git checkout -b $@ && git push --set-upstream origin $@; }; f"
# usage
git al3
show commit graph
ปกติแล้ว เราสามารถใช้ git log
เพื่อดู commit graph เป็นประวัติว่าทีมเราทำอะไรไปบ้าง จะได้หน้าตาแบบนี้
อ่านยากอยู่นะ
ทีนี้ git ก็ได้ provide flag ให้เราแต่ง graph ได้เหมือนกัน เลยกลายเป็น alias ยาวๆ แบบนี้
al4 = log --all --graph --abbrev-commit --decorate --date=format-local:'%Y-%m-%d %H:%M:%S' --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%ad%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
# usage
git al4
ได้ graph มาอ่านง่ายขึ้นกว่าเดิมเยอะมากฮะ
แล้วมันก็สามารถแสดงเส้นโยง branching และ merging ด้วยนะ