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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น