จัดการ Git Repo บนเครื่องอย่างง่ายๆ ด้วย ghq

Manassarn Manoonchai
monosor
Published in
Nov 1, 2020

เมื่อนานมาแล้ว ผมจะเก็บไฟล์โค้ดทั้งหมดลงใน ~/Code ซึ่งเมื่อจะเรียกใช้งานผ่าน Terminal หรือ Clone Repo ใหม่ก็ต้องทำการ cd Codeก่อนทุกครั้ง แถมเวลาเปลี่ยนเครื่องใหม่ (ตอนนี้มี Mac สามเครื่อง) ก็ต้องมาจัดการกับโค้ดเหล่านี้ใหม่ทุกครั้งไป

ครั้นจะ Sync ทั้งหมดขึ้น Cloud ก็ไม่ใช่เรื่องที่สมควรนัก เพราะจะเกิด Conflicts ได้ง่าย แถมไฟล์ที่ควรจะ Git-ignore ก็ถูกนำขึ้นไปด้วย เมื่อก่อนผมเคยนำ Codebase บางส่วนไปไว้บน Dropbox พบว่าเวลาส่วนใหญ่ถูกใช้ไปกับ .git และ node_modules

ตอนแรกผมคิดว่าจะเขียน Shell Script มาแก้ปัญหานี้เอง แต่ดันไปเจอกับ ghq เสียก่อน ซึ่งเขียนด้วย Golang เสียด้วย มีคนทำเป็น Rust ด้วยแต่ยังไม่กล้าลองเพราะยังไม่เป็นที่นิยมเท่ากับ ghq

วิธีใช้ง่ายมาก แค่รันคำสั่ง ghq get ตามด้วยชื่อ username/reponame หรือ Url เต็มก็ได้ ในกรณีที่ก็อปมาจาก Browser หรือว่าใช้ Gitlab

ถ้ายังไม่เคย Clone มันจะทำการ Clone จาก github.com/username/reponame ไปเก็บเอาไว้ที่ ~/ghq/github.com/username/reponame โดยที่เราไม่ต้อง cd ก่อนให้เสียเวลา

และถ้าเราเพิ่มพารามิเตอร์ -l (Look) เข้าไป หลังจากที่ Clone แล้วมันจะ cd เข้าไปให้เองโดยอัตโนมัติ ทำให้ใช้แทน z หรือ zoxide ได้เลย

นอกจากนี้ยังมี Command อื่นๆ หรือแม้กระทั่งการเซ็ตต้ังค่าต่างๆ ผ่าน Git-config เช่นใน Git-config ของผมเอง เปลี่ยน Root จาก ~/ghq เป็น ~/Code แทน เป็นต้น

# ~/.gitconfig[ghq]
root = ~/Code

แถม : ผมใช้ ghq get -l มาสักพักแล้วรู้สึกว่ายังเสียเวลามากเกินไป สร้าง Alias ซะเลย

alias gq='ghq get -l -p'
# -p คือ Clone ด้วย SSH แทน HTTPS จะได้ Clone Private Repo ง่ายกว่า

วิธีการติดตั้ง ghq ให้รัน brew install ghq สำหรับ Homebrew บน macOS หรือ Platform อื่นๆ ดูได้ที่ x-motemen/ghq

(บทความนี้แปลและเรียบเรียงเพิ่มเติมจาก Manage all the Git repos with ghq และเป็นวันที่ 27 ของ #100DaysOfWriting Challenge)

--

--