15 เคล็ดลับเพื่อยกระดับเวิร์กโฟลว์ Git
(insight.infograb.net)- มาดูวิธีเปรียบเทียบคอมมิต ลบบรันช์เก่า และเขียน alias เพื่อประหยัดเวลาในการทำงานในเทอร์มินัล
- Git aliases
- สร้าง alias (ชื่อย่อ) ให้กับคำสั่งที่ใช้เป็นประจำ เพื่อประหยัดเวลาในการทำงานบนเทอร์มินัล
- ตัวอย่าง: แทนที่จะพิมพ์
git checkout masterก็พิมพ์co masterได้ - แก้ไขหรือเพิ่มคำสั่งได้โดยแก้ไฟล์
~/.gitconfigโดยตรง
- ตรวจสอบสถานะรีโพซิทอรีจาก command prompt
- หากต้องการดูสถานะของรีโพซิทอรี ให้รัน
git-prompt.sh - ถ้าใช้ Linux และติดตั้ง Git ผ่าน package manager ไฟล์นี้อาจมีอยู่แล้วในไดเรกทอรี
/etc/bash_completion.d/
- หากต้องการดูสถานะของรีโพซิทอรี ให้รัน
- เปรียบเทียบคอมมิตจาก command line
- ใช้คำสั่ง
git diffเพื่อเปรียบเทียบความแตกต่างระหว่างเวอร์ชันของไฟล์เดียวกันหรือระหว่างคอมมิต - ถ้าต้องการใช้เครื่องมือแบบเห็นภาพมากขึ้นในการเปรียบเทียบ diff ก็สามารถใช้
git difftoolได้- Meld: ตัวดู/ตัวแก้ไขที่มีประโยชน์สำหรับการเปรียบเทียบ diff แบบเห็นภาพ
- ใช้คำสั่ง
- stash การเปลี่ยนแปลงที่ยังไม่ได้ commit
- เมื่อยังไม่อยาก commit ฟีเจอร์ที่ทำไม่เสร็จ แต่ต้องการเก็บการเปลี่ยนแปลงปัจจุบันไว้ ให้ใช้คำสั่ง
git stashเพื่อนำการเปลี่ยนแปลงออกไปเก็บชั่วคราว - เมื่อแก้ไขงานอื่นเสร็จและต้องการกลับมาที่การเปลี่ยนแปลงเดิม ให้รัน
$ git stash pop
- เมื่อยังไม่อยาก commit ฟีเจอร์ที่ทำไม่เสร็จ แต่ต้องการเก็บการเปลี่ยนแปลงปัจจุบันไว้ ให้ใช้คำสั่ง
- pull บ่อย ๆ
- หากใช้ GitLab Flow จะทำงานใหม่บนฟีเจอร์บรันช์
- ระหว่างเวลาที่พัฒนาฟีเจอร์ อาจมีการเปลี่ยนแปลงหลายอย่างเกิดขึ้นบนบรันช์
master - เพื่อหลีกเลี่ยงความขัดแย้งของโค้ดที่ใหญ่ขึ้น ควรดึงการเปลี่ยนแปลงจากบรันช์
masterมายังบรันช์ที่กำลังทำงานอยู่บ่อย ๆ เพื่อให้หลีกเลี่ยง conflict ได้เร็วและ merge กลับเข้าmasterได้ง่ายขึ้น
- การเติมคำสั่งอัตโนมัติ
- เมื่อใช้สคริปต์ auto-completion ก็จะใช้คำสั่งบน bash, tcsh และ zsh ได้ง่ายและรวดเร็วขึ้น
- หากต้องการพิมพ์
git pullก็พิมพ์เพียงตัวอักษรแรก เช่นgit pแล้วกด tab - หากต้องการแสดงคำสั่งทั้งหมดที่ใช้ได้ ให้พิมพ์
gitในเทอร์มินัลแล้วกด tab+tab
- ตั้งค่า
.gitignoreแบบ global- ถ้าไม่ต้องการ commit ไฟล์อย่าง
.DS_Storeหรือไฟล์swpของ Vim สามารถตั้งค่าไว้ในไฟล์.gitignoreแบบ global ได้
- ถ้าไม่ต้องการ commit ไฟล์อย่าง
- ใช้ฟีเจอร์ autosquash ของ Git เป็นค่าพื้นฐาน
- Autosquash ช่วยให้ squash คอมมิตระหว่างการทำ interactive rebase ได้ง่ายขึ้น
- แม้จะเปิดใช้งานได้ทุกครั้งด้วย
git rebase -i —autosquashแต่การเปิดไว้เป็นค่าเริ่มต้นจะสะดวกกว่า
- ลบสิ่งที่ถูกลบออกจากรีโมตในโลคัลบรันช์เมื่อ fetch/pull
- บรันช์ที่ไม่มีอยู่แล้วในรีโมตรีโพซิทอรีอาจยังคงค้างอยู่ในโลคัลรีโพซิทอรี
- หากต้องการลบทุกครั้งที่ fetch/pull ให้ใช้
$ git config —global fetch.prune true
- ใช้ Git blame ให้มีประสิทธิภาพมากขึ้น
- Git blame ใช้ค้นหาว่าใครเป็นคนแก้ไขบรรทัดไหนในไฟล์
- ตัวเลือก
$ git blame -w# ไม่สนใจช่องว่าง$ git blame -M# ไม่สนใจการย้ายข้อความ$ git blame -C# ไม่สนใจการย้ายข้อความไปยังไฟล์อื่น
- เพิ่ม alias เพื่อ checkout merge request มาที่เครื่องโลคัล
- merge request จะรวมทั้งประวัติทั้งหมดของรีโพซิทอรีและคอมมิตที่เพิ่มเข้ามาในบรันช์ที่เกี่ยวข้องกับ MR
- เมื่อ source project เป็น fork ของ target project ก็สามารถ checkout merge request แบบสาธารณะมายังเครื่องโลคัลได้
- alias ของ HEAD
@คือสิ่งเดียวกับHEADและทำให้การ rebase ง่ายขึ้นมากเมื่อใช้งาน
- ย้อนกลับไฟล์ (reset)
- หากกำลังแก้โค้ดอยู่แล้วพบว่าการเปลี่ยนแปลงที่ทำไปมีปัญหา ก็จำเป็นต้องย้อนกลับไฟล์
- โดยไม่ต้องกด undo กับทุกการแก้ไข สามารถ reset ไฟล์กลับไปยัง
HEADของบรันช์นั้นได้- ตัวอย่าง)
$ git reset —hard HEAD
- ตัวอย่าง)
- หากต้องการย้อนกลับเพียงไฟล์เดียว ให้รันคำสั่งต่อไปนี้
- ตัวอย่าง)
$ git checkout HEAD — path/to/file
- ตัวอย่าง)
- ปลั๊กอิน
git-open- หากต้องการเข้าเว็บไซต์ที่โฮสต์รีโพซิทอรีที่ใช้อยู่ได้อย่างรวดเร็ว สามารถใช้
git-openได้
- หากต้องการเข้าเว็บไซต์ที่โฮสต์รีโพซิทอรีที่ใช้อยู่ได้อย่างรวดเร็ว สามารถใช้
- ปลั๊กอิน
git-extras- หากต้องการเพิ่มความสะดวกในการใช้ Git ด้วยคำสั่งที่มากขึ้น ให้ใช้ปลั๊กอิน
git-extras - มี
git info(แสดงข้อมูลรีโพซิทอรี) และgit effort(จำนวนคอมมิตต่อไฟล์) ให้ใช้งาน
- หากต้องการเพิ่มความสะดวกในการใช้ Git ด้วยคำสั่งที่มากขึ้น ให้ใช้ปลั๊กอิน
ยังไม่มีความคิดเห็น