รวม 10 คำสั่ง Git
Last updated
Last updated
ในบทความนี้เราจะพูดถึง 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 ไว้:
กด i เพื่อเข้าสู่ Insert Mode
พิมพ์ Commit Message ของคุณใน บรรทัดแรก
กดปุ่ม Esc
พิมพ์ :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/
Reference : https://www.techstarthailand.com/blog/detail/10-Git-Commands-You-Should-Know/971