จัดการ Git Repo บนเครื่องอย่างง่ายๆ ด้วย ghq
เมื่อนานมาแล้ว ผมจะเก็บไฟล์โค้ดทั้งหมดลงใน ~/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)