- มาดูวิธีเปรียบเทียบคอมมิต ลบบรันช์เก่า และเขียน 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
- 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 ได้
- ใช้ฟีเจอร์ 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 (จำนวนคอมมิตต่อไฟล์) ให้ใช้งาน
ยังไม่มีความคิดเห็น