รวม 10 คำสั่ง Git ที่ใช้ในสถานการณ์ต่าง ๆ

24-ก.ค.-19

คัมภีร์เทพ IT

ในบทความนี้เราจะพูดถึง 10 คำสั่ง Git ที่ใช้ในสถานการณ์ต่าง ๆ ซึ่งเป็นสิ่งที่ Developer, Data Scientist, หรือ Product Manager ควรรู้จัก โดยจะกล่าวถึงการใช้ Git ในสถานการณ์ต่าง ๆ คือ การตรวจสอบ การยกเลิก และการจัดระเบียบ รวมทั้งครอบคลุมถึงวิธีการหลีกเลี่ยงปัญหาใน Vim และการประหยัดเวลาด้วย Bash Aliases และ Git Editor Configuration

สำหรับบทความนี้เหมาะกับคนที่เคยมีประสบการณ์ในการใช้งาน Git มาบ้างแล้ว

วัตถุประสงค์เพื่อตรวจสอบสิ่งต่าง ๆ (Inspecting Things)

มาดูการตรวจสอบในเรื่องการเปลี่ยนแปลงกันก่อน

  • git diff: ใช้​​ดูการเปลี่ยนแปลงของ Files ทั้งหมดในเครื่อง โดยชื่อ File สามารถถูกต่อท้ายเพิ่มเติมได้ เพื่อแสดงถึงการเปลี่ยนแปลงของ File นั้น ๆ
  • git log: ใช้ดู Commit History ทั้งหมด โดยสามารถถูกใช้สำหรับ File ที่มี git log -p my_file และคุณสามารถป้อน q เพื่อ Exit
  • git blame my_file: ใช้ดูว่ามีใครที่เข้ามาเปลี่ยนแปลง อะไร และ เมื่อใด ใน my_file
  • git reflog: ใช้แสดง Log ของการเปลี่ยนแปลงใน HEAD ของ Local Repository มันเหมาะสำหรับการค้นหางานที่สูญหายไป

การตรวจสอบสิ่งต่าง ๆ ด้วย Git นั้น ดูไม่น่าจะสร้างความสับสนอะไรมากมาย ในทางตรงกันข้าม Git มีตัวเลือกมากมายสำหรับการ Remove Commit, Undo Commit และการเปลี่ยนแปลง File

วัตถุประสงค์เพื่อยกเลิกการกระทำสิ่งต่าง ๆ (Undoing Things)

สำหรับ git reset, git checkout และ git revert เป็นคำสั่งที่ถูกใช้เพื่อยกเลิกการกระทำที่ได้รับผลกระทบจากการเปลี่ยนแปลงใน Repository ของคุณ แต่คำสั่งเหล่านี้อาจมีการใช้งานที่ยุ่งยากอยู่บ้าง

ใน git reset และ git checkout เป็นคำสั่งที่สามารถใช้ได้ทั้งกับการ Commit และกับ File ส่วน git revert จะถูกใช้ในระดับของการ Commit เท่านั้น

หากคุณเพียงแค่จัดการกับการ Commit ในเครื่องของคุณเอง ซึ่งยังไม่ได้ถูก Merge รวมเข้ากับ Remote Work ที่ใช้งานร่วมกับคนอื่น ๆ คุณก็สามารถใช้คำสั่งเหล่านี้ได้

และถ้าคุณกำลังทำงานร่วมกันกับหลาย ๆ คน และต้องการให้ยกเลิกการ Commit ใน Remote Branch เครื่องมือที่คุณจะใช้สำหรับกรณีนี้ก็คือ git revert

สำหรับคำสั่งด้านล่างนี้ สามารถใช้งานได้หลากหลาย และนี่ก็เป็นการใช้งานทั่วไปของพวกมัน:

  • git reset --hard HEAD: Discard การเปลี่ยนแปลงทั้งแบบ Staged และ Unstaged หลังจากการ Commit ล่าสุด

เป็นการระบุการ Commit รูปแบบอื่น แทนที่จะเป็น HEAD เพื่อยกเลิกการเปลี่ยนแปลง หลังจากการ Commit นั้น ซึ่ง hard จะเป็นการระบุว่า การเปลี่ยนแปลงทั้งแบบ Staged และ Unstaged จะถูกยกเลิกไป

คุณควรตรวจสอบให้แน่ใจว่า คุณไม่ได้ Discard การ Commit จาก Remote Branch ที่เพื่อนร่วมงานของคุณกำลังใช้งานร่วมอยู่ด้วย

  • git checkout my_commit: Discard การเปลี่ยนแปลงแบบ Unstaged ตั้งแต่ my_commit

มักถูกใช้สำหรับ my_commit เพื่อยกเลิกการเปลี่ยนแปลง Local Working Directory ของคุณ หลังจากการ Commit ครั้งล่าสุด

เป็นคำสั่งที่ดีที่สุดสำหรับการ Undo ในเครื่อง Local เท่านั้น มันจะไม่ไปวุ่นวายกับ Commit History จาก Remote Branch ที่เพื่อนร่วมงานของคุณกำลังใช้งานอยู่

หากคุณใช้ checkout กับ Branch แทนการ Commit, HEAD ก็จะถูก Switch ไปเป็น Branch ที่ระบุ และ Working Directory จะถูก Update ให้ตรงกัน

  • git revert my_commit: Undo ผลที่เกิดขึ้นจากการเปลี่ยนแปลงใน my_commit ซึ่ง revert จะทำการ Commit ใหม่เมื่อมีการ Undo การเปลี่ยนแปลง

มีความปลอดภัยสำหรับ Project ที่มีคนทำงานร่วมกันหลายคน เนื่องจากมันจะไม่ไปเขียนทับ History ที่ Branch ของ User คนอื่นที่อาจกำลังใช้งานร่วมกันอยู่

บางครั้งคุณต้องการ Delete Untracked Files ใน Local Directory ของคุณ ตัวอย่างเช่น คุณอาจ Run Code บางอย่างที่สร้าง File ประเภทต่าง ๆ เป็นจำนวนมาก ซึ่งคุณไม่ต้องการมันใน repo ของคุณ และแน่นอนว่าคุณสามารถ Clean มันได้ในพริบตา

  • git clean –n: Delete Untracked Files ใน Local Working Directory ของคุณ

สำหรับ Flag –n ใช้สำหรับ การทดลอง Delete ข้อมูล โดยที่ยังไม่ได้ Delete ออกไปจริง ๆ

ใช้ Flag –f ใช้เพื่อ Remove File ออกไปจริง ๆ

ใช้ Flag –g ใช้เพื่อ Remove Untracked Directories

Default แล้ว Files ที่ Untracked โดย .gignignore จะไม่ถูก Delete แต่ Behavior นี้ก็สามารถปรับเปลี่ยนได้

วัตถุประสงค์เพื่อจัดระเบียบสิ่งต่าง ๆ (Tidying Things)

  • git commit –amend: เพิ่มการเปลี่ยนแปลงแบบ Staged ของคุณไปในการ Commit ล่าสุด

หากไม่มีการกำหนดให้อยู่ในสถานะ Staged คำสั่งนี้จะอนุญาตให้คุณสามารถแก้ไข Commit Message ล่าสุด คุณสามารถใช้คำสั่งนี้ได้เฉพาะเมื่อการ Commit นั้น ไม่ได้ถูก Integrate เข้ากับ Remote Master Branch

  • git push my_remote –tags: ส่ง Local Tags ทั้งหมดไปยัง Remote repo ซึ่งมันเหมาะสำหรับการเปลี่ยนแปลง Version

หากคุณใช้ Python และต้องการเปลี่ยนแปลง Package ที่คุณสร้างขึ้น, bump2version จะสร้าง Tags ให้คุณโดยอัตโนมัติ เมื่อคุณ Push Tags แล้ว คุณสามารถใช้ Tags เหล่านั้นใน Release ของคุณได้ นี่คือคำแนะนำในการสร้าง OSS Python Packageแรกของคุณ

เมื่อคุณติดอยู่ใน VIM และไม่สามารถออกไปได้

สำหรับ Git บางครั้งคุณอาจพบว่า ตัวเองถูกโยนลงใน Vim Editor Session ตัวอย่างเช่น สมมติว่าคุณพยายาม Commit โดยที่ไม่มี Commit Message ซึ่ง Vim จะ Open โดยอัตโนมัติ หากคุณอยากรู้จัก Vim เพิ่มเติม สามารถดูได้ที่ Stack Overflow

นี่คือ 4 ขั้นตอนในการออกจาก Vim พร้อม File ที่ Save ไว้:

  1. กด i เพื่อเข้าสู่ Insert Mode
  2. พิมพ์ Commit Message ของคุณใน บรรทัดแรก
  3. กดปุ่ม Esc
  4. พิมพ์ :x ( อย่าลืมเครื่องหมาย : )

ตอนนี้ คุณก็ออกจาก Vim ได้แล้ว

เปลี่ยน Default Editor

เพื่อหลีกเลี่ยงปัญหาทั้งหมดที่เกี่ยวกับ Vim คุณสามารถเปลี่ยน Default Editor ใน Git ได้

นี่คือ Document ที่มีคำสั่งทั่วไปสำหรับ Editors และนี่ก็คือ คำสั่งสำหรับเปลี่ยน Default สำหรับ Editor ตัวหนึ่งคือ Atom:

git config --global core.editor "atom --wait"

สมมติว่า คุณติดตั้ง Atom แล้ว คุณถึงจะสามารถแก้ไขปัญหา Git ของคุณได้

สร้าง Shortcut สำหรับคำสั่ง Git

เพิ่ม Shortcut สำหรับคำสั่ง Git โดยการเพิ่ม Aliases ต่อไปนี้ใน .bash_profile ของคุณ

คุณสามารถปรับเปลี่ยน เพื่อสร้าง Shortcuts สำหรับคำสั่ง Git ที่คุณต้องการได้

หากคุณไม่มี .bash_profile คุณสามารถสร้างมันได้ใน macOS โดยทำตามนี้:

touch ~/.bash_profile

จากนั้นก็เปิดมันด้วย:

open ~/.bash_profile

ดูข้อมูลเพิ่มเติมเกี่ยวกับ .bash_profile ได้ที่นี่

ตอนนี้เมื่อคุณพิมพ์ gs ในเครื่อง Terminal มันก็เหมือนกับการพิมพ์ git status และโปรดทราบว่าคุณสามารถใช้ Flags อื่น ๆ ใน Terminal หลังจาก Shortcut ของคุณได้

คุณสามารถสร้าง Git aliases ได้ แต่คุณจำเป็นต้องพิมพ์ git ก่อน คำสั่ง Shortcut

สรุป

คุณคงได้เห็นกลุ่มคำสั่ง Git ที่สำคัญซึ่งใช้ในสถานการณ์ต่าง ๆ และการ Config. ค่าเพื่อให้ช่วยให้คุณประหยัดเวลาขึ้น ตอนนี้เชื่อว่าคุณมีพื้นฐานใน Git และ GitHub แล้ว แต่หากคุณต้องการมีความรู้มากขึ้น ลองทำตามคำแนะนำนี้ดู:

  • ลองดูที่ Bitbucket Git Tutorial นี้ เพื่อเจาะลึกในรายละเอียดต่าง ๆ มากขึ้น
  • ลองดูที่ Interactive Guide เกี่ยวกับ Git Branching และเนื่องจาก Branching อาจเป็นเรื่องที่ไม่ง่ายและทำให้คุณสับสนได้ง่าย ดังนั้นมันจึงคุ้มค่าที่จะทำความเข้าใจมัน
  • ลงมือทำ เรียนรู้ และลองอธิบายมัน ให้คนอื่น ๆ ฟังดู

ที่มา:  https://towardsdatascience.com/

 

 

 

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

 

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

เพิ่มเพื่อน

 

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