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 = [email protected]
[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 ด้วยนะ


References