7 คำสั่งและเคล็ดลับการใช้งาน Git (ที่คุณอาจไม่เคยลองใช้)

05-ต.ค.-22

คัมภีร์เทพ IT

ปัจจุบันดูเหมือน Git จะเป็น Source Code Management Solution อันดับต้น ๆ ของอุตสาหกรรม Software ไปแล้ว เชื่อว่า Developers คงรู้จักคำสั่ง Git ที่มักใช้งานแทบจะทุกวันอยู่แล้ว ไม่ว่าจะเพื่อ Staging, Committing, Branching, Merging และจัดการ Remote Repositories กันอยู่แล้ว แต่บทความนี้จะมาแนะนำ 7 คำสั่งและเคล็ดลับการใช้งาน Git (ที่คุณอาจไม่เคยลองใช้) ซึ่งเป็นประโยชน์ต่อการทำงาน

1. ค้นหา Top Contributor

ทีมพัฒนา Software มักประกอบไปด้วย Developers มากกว่าหนึ่งคน แม้ว่าคุณจะทำ Software Project ที่เป็น Open-Source และฟรีก็ตาม แต่คุณจะได้รับ Code Contributions ที่น่าประทับใจจาก Open-Source Community อย่างแน่นอน ดังนั้นที่ Git Repositories ของเรา จึงมีการ Commit จากผู้เขียนหลายคน แล้วจะทำอย่างไรถ้าคุณต้องการแสดงรายการของ Top Contributors เหล่านั้น? วิธีที่ง่ายที่สุดก็คือ ตรวจสอบตรง Contributor Tab บน GitHub (หรือ Git Hosting Service ที่คล้าย ๆ กัน) ดังที่แสดงด้านล่าง:

นี่เป็น Contributors 4 อันดับแรกของ React Native Project, Screenshot โดยผู้เขียนบทความนี้

เราสามารถจัดอันดับ Contributors ทั้งหมดได้ตามจำนวน Commits ของพวกเขา ด้วยคำสั่ง Git ที่เป็น Build-in ดังต่อไปนี้:

คุณสามารถได้ข้อมูลของ Top Contributors (จำนวน n คน) ได้ ด้วยการใช้คำสั่ง Git จากด้านบนร่วมกับคำสั่ง head ของ Unix:

อีกทั้งคุณยังสามารถรับ Email ของผู้เขียนแต่ละคนได้โดยระบุ --email Flag นอกจากนี้ หากคุณใช้ Commit Message Convention คุณก็จะสามารถค้นหาได้ว่า ใครที่เป็นคนแก้ไข Bugs มากที่สุด ด้วยคำสั่งต่อไปนี้:

โปรดทราบว่า ในส่วนนี้เราจะขอข้ามในเรื่องการนับจำนวน Merge Commits ด้วยการใช้ --no-merges Flag

2. การดึง Commit Hash ปัจจุบันสำหรับ DevOps Scripts

Developers มักจะใช้งาน Git Commit Hash ตัวปัจจุบันร่วมกับ Software ที่สร้างขึ้นโดยเฉพาะ เพื่อเชื่อมโยง Code Snapshot กับ Software Version ที่ถูก Release ออกไป หากคุณใช้ Flutter อยู่และร้องขอให้ Flutter CLI ทำการ Return รายละเอียดของ Version คุณก็จะได้รับ Commit Hashes แบบย่อ ๆ หลายรายการ ดังที่แสดงด้านล่างนี้:

Flutter Version Option แสดงถึง Commit Hashes สั้น ๆ, Screenshot โดยผู้เขียนบทความนี้

โดยทั่วไป Commit Hashes เหล่านี้ จะถูกรวมอยู่ใน Software Binaries ผ่าน DevOps Scripts ตัวอย่างเช่น หากคุณต้องการเพิ่ม Commit Hash ลงใน GNU/GCC ที่ Compile แล้วของ GNU/Linux Binaries คุณสามารถ Fetch Commit ตัวปัจจุบันแล้วส่งไปยัง GCC ผ่าน CLI Macro Definitions:

คุณสามารถรับ Commit ตัวปัจจุบัน ได้ด้วยคำสั่งต่อไปนี้:

ตอนนี้คุณสามารถใช้คำสั่ง Git ด้านบนใน DevOps Scripts ของคุณ ดังที่แสดงด้านล่าง:

สุดท้ายนี้ คุณสามารถเข้าถึง Macro Definition ด้านบน ภายใน Code ของคุณ ได้ดังนี้:

คุณสามารถใช้วิธีข้างต้น เพื่อรวม Commit Hash ตัวปัจจุบันลงใน Open-Source Application Framework ของคุณได้ — คุณสามารถเรียกดูได้ผ่าน Source บน GitHub

3. Git Diffing ผ่าน Commits และ Branches

สำหรับ Programmer ที่เอาจริงเอาจังแทบทุกคน มักจะใช้งาน git diff หลังจากแก้ไข Codebase เพื่อตรวจสอบว่ามีอะไรที่เปลี่ยนแปลงไปบ้าง แม้ว่า GUI Editors ในสมัยใหม่ จะแสดง git diff ภายใน Editor แล้วก็ตาม คำสั่ง git diff นั้นมีความยืดหยุ่นสูงเหมือนกับคำสั่ง Git อื่น ๆ ตัวอย่างเช่น เราสามารถค้นหาความแตกต่างตาม File Extension ได้ ด้วยคำสั่งนี้:

เราสามารถหาความแตกต่างระหว่าง 2  Commits ได้เช่นกัน ดูตัวอย่างต่อไปนี้:

คำสั่งด้านบนนี้ แสดงความแตกต่างระหว่าง Commit ครั้งก่อนหน้าและ Commit ครั้งที่ 2 นอกจากนี้ คุณยังสามารถเปรียบเทียบ Branches โดยใช้คำสั่ง diff ได้เช่นกัน ลองป้อนชื่อ Brach แทน Commit Identifiers ดูสิ

4. การ Query และจัด Format ของ Git Logs

การทำงานกับ Git Repository เปรียบเสมือนการเขียน Events พิเศษ ๆ ลงใน Diary ของคุณ เราสามารถเห็นสิ่งที่เกิดขึ้นในแต่ละวันที่ผ่านไปได้ Developers มักใช้คำสั่ง git log เพื่อดูการแก้ไขครั้งล่าสุด คำสั่ง log ของ Git มาพร้อมกับ Command-Line Options ต่าง ๆ สำหรับการ Query คำสั่งและการจัด Format ของ Outputs ตัวอย่างเช่น เราสามารถกรอง Commit โดยอิงตามชื่อของผู้เขียนที่ต้องการได้:

คุณยังสามารถใช้ --grep CLI Option เพื่อกรอง Outputs โดยยึดตาม Commit Messages ตามที่เราเคยใช้กับคำสั่ง shortlog มาก่อน

โดยค่า Default ของคำสั่ง log ของ Git จะแสดงรายละเอียดของ Output แต่เราสามารถรับ Minimal Response ด้วย Shorthand CLI Flags เช่น --oneline ซึ่งคุณยังสามารถกำหนด Format ของ Log ได้ด้วย ดูตัวอย่างต่อไปนี้:

นี่เป็นตัวอย่าง Output ของ Log ที่ถูกกำหนดขึ้นเอง, Screenshot โดยผู้เขียนบทความนี้

เราสามารถได้ Output แบบข้างต้น ด้วยคำสั่งต่อไปนี้:

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Syntax การจัด Format ที่สวยงามของ Git ได้จาก Official Git Documentation ซึ่ง Syntax การจัด Format ที่สวยงามนี้ จะช่วยในเรื่องการเขียน DevOps Scripts ใน Git ด้วย Bash, Python และภาษา Script ยอดนิยมเหมือนอย่าง JavaScript เป็นต้น

5. การจัด Format ของ Outputs ที่ยังไม่มีโครงสร้างเป็น Table

คุณรู้หรือไม่ว่าคำสั่ง Git บางคำสั่งเช่น git branch สามารถให้คุณใช้ --column Flag เพื่อจัด Format ของ Output เป็นรูปแบบ Column ได้ โดย Git มีการเตรียม Features หลัก เช่นเดียวกันกับ คำสั่งตัวช่วย (Helper Command) ทั่วไป สำหรับ Developers ด้วยคำสั่ง git column ซึ่งมันจะจัด Format ของ Output Data มาตรฐานลงใน Table ตาม Input Parameters ต่าง ๆ สมมติว่า คุณกำลังสร้างรูปแบบที่คั่นด้วยการขึ้นบรรทัดใหม่ด้วยคำสั่ง seq ของ Unix เราสามารถสร้าง Table ที่มี Data เหล่านี้ได้โดยใช้คำสั่ง seq ลงใน git column

ลองดูคำสั่งต่อไปนี้:

ตอนนี้เราสามารถเห็นลำดับตัวเลขทั้งหมดถูกจัดรูปแบบเป็น Table ตามขนาดของ Terminal Window ปัจจุบัน:

Screenshot โดยผู้เขียนบทความนี้

เราสามารถใช้ git column ใน Bash Script เพื่อ Return Output ในรูปแบบที่มีโครงสร้างและใช้งานง่าย

6. การเพิ่ม Notes สั้น ๆ ลงใน Commits

Developers มักจะเขียน Commit Messages ที่ชัดเจนและให้ Clean ที่สุด เพื่อ Maintain Development History ให้ดีที่สุด ทีม Development บางทีม ยังสร้าง Release Notes โดยอัตโนมัติพร้อม Commit Messages ซึ่งต้องขอขอบคุณ Commit Conventions ยอดนิยม คำถามคือ คุณจะเพิ่ม Notes ลงไปสำหรับการ Commit ได้อย่างไร? หากคุณเพิ่มบางอย่างใน Commit Message มันจะปรากฏบน Remote Git Hosting GUIs อีกคำถามคือ แล้วจะเพิ่ม Hidden Note เพื่อจดจำเกี่ยวกับงานด้านเทคนิคหรือบันทึก Message สำหรับ CI/CD Server ได้อย่างไร?

Built-in Git Notes Feature จะช่วยให้เราสามารถเพิ่ม Notes ลงไปสำหรับการ Commit ได้ เพียง Run คำสั่งต่อไปนี้เพื่อเชื่อมโยง Note กับ Commit ตัวปัจจุบัน:

คุณสามารถเขียน Note แบบยาวหลายบรรทัดได้โดยใช้ Editor Program โดยไม่ต้องใช้ -m Option คุณสามารถอ่าน Note ตัวปัจจุบันได้ด้วยคำสั่ง git notes show นอกจากนี้ คำสั่ง git log จะแสดง Note ไว้ให้อยู่แล้วตามค่า Default และก่อนหน้านี้ GitHub ก็มีการใช้ git notes เป็นเหมือน Comments ในช่วงที่ผ่านมา แต่ตอนนี้ GitHub เลิกสนับสนุนการใช้ notes แล้ว

โดยค่า Default แล้ว Git จะไม่ Push/Pull notes ให้ แต่คุณสามารถจัดการ notes แบบ Remote ได้ ด้วยคำสั่งต่อไปนี้:

7. การตรวจสอบการ Commit

โดยปกติเราจะตรวจสอบ Git commits บน Remote Git Hosting Services เช่น GitHub เพื่อวิเคราะห์การเปลี่ยนแปลงของ Code โดยใน GitHub จะมีการแสดง Commit พร้อมการเปลี่ยนแปลง File และช่วยให้คุณสามารถเริ่มการสนทนาได้จากจุดนี้ นอกจากนี้ Built-in Git Features ยังช่วยให้คุณตรวจสอบ Commit ที่ต้องการภายในเครื่อง Local ได้ ตัวอย่างเช่น ป้อนคำสั่งต่อไปนี้เพื่อดูรายละเอียดเกี่ยวกับ Commit ปัจจุบัน:

เราสามารถเรียกดู Commit ที่ผ่านมาด้วย HEAD~n Syntax หรือ Commit Hash ตัวอย่างเช่น คุณสามารถรับรายละเอียดของ Commit อันที่ 3 ด้วยคำสั่งต่อไปนี้:

--oneline Option ที่รู้จักกันดีนี้ จะทำหน้าที่ที่นี่ มันจะสร้าง Output ที่มีรายละเอียดการ Commit สั้น ๆ ดังที่แสดงด้านล่างนี้:

ตรวจสอบ Commit ที่ผ่านมาด้วยคำสั่ง show, Screenshot โดยผู้เขียนบทความนี้

ที่มา: https://levelup.gitconnected.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด