คำสั่งต่าง ๆ ของ Git
#HelloFront-end #HelloErmine #HelloWorld2021
Last updated
Was this helpful?
#HelloFront-end #HelloErmine #HelloWorld2021
Last updated
Was this helpful?
git config
เป็นคำสั่งที่ใช้แสดงและกำหนดข้อมูลของผู้ใช้เพื่อระบุตัวตน และคุณสมบัติอื่น ๆ ของ Git
git init
เป็นคำสั่งที่ใช้สร้างระบบของ Git ขึ้นมาภายใต้โฟลเดอร์หรือ path นั้น โดยจะสร้างโฟลเดอร์ .git ขึ้นมาเพื่อใช้เก็บสำรองข้อมูลการเปลี่ยนแปลงและคุณสมบัติอื่น ๆ ของ Git
git status
git add
เป็นคำสั่งที่ใช้เพิ่มการเปลี่ยนแปลงของ source code เข้าไปที่สถานะ Staged
git commit
เป็นคำสั่งที่ใช้ยืนยัน source code ที่อยู่ในสถานะ Staged เข้าไปเก็บไว้ที่ Local Repository
git log
เป็นคำสั่งที่ใช้แสดงประวัติการ commit ที่เก็บไว้ใน repository
git branch
เป็นคำสั่งที่ใช้ในการแสดง branch และสร้าง branch เพื่อแยกสาขาในการพัฒนา ซึ่งทำให้การพัฒนาซอฟต์แวร์มีความยืดหยุ่นมากขึ้น
เรื่องของ branch และ tag มีความเกี่ยวข้องกับเรื่องของ Release Process ของการพัฒนาซอฟต์แวร์ ขึ้นอยู่กับการตกลงกันภายในทีมและรูปแบบที่เหมาะสมกับซอฟต์แวร์ที่กำลังพัฒนา ซึ่งเรียกเทคนิคนี้ว่า Branch Strategy (Git Workflow, Branching Models, Branching Workflow, Git Flow)
git checkout
เป็นคำสั่งที่ใช้ในการสลับ Working Directory ไปยัง branch หรือ commit ที่เราระบุ
git reset
เป็นคำสั่งที่ใช้ย้อนกลับไปที่เวอร์ชัน ก่อนหน้า โดยระบุ branch หรือ Commit Id (SH-1 แบบย่อของ Commit 7 ตัว เช่น 4bcb295) ซึ่งมี option ที่สำคัญ 3 ตัวดังนี้
soft ย้อนการเปลี่ยนแปลง และคงสถานะการเปลี่ยนแปลงของ source code ไว้ที่สถานะ Staged
mixed ย้อนการเปลี่ยนแปลง และคงสถานะการเปลี่ยนแปลงของ source code ไว้ที่สถานะ Working Directory หรือ Modified
hard ย้อนการเปลี่ยนแปลงแบบลบทับการเปลี่ยนแปลงก่อนหน้าทั้งหมด คำสั่งนี้อันตรายเพราะมันจะทำให้ประวัติของ commit ที่เก็บไว้ใน repository หายไป จึงยังไม่เหมาะกับมือใหม่
git merge
เป็นคำสั่งที่ใช้ในการรวม branch หรือ commit ทั้งสองเข้าด้วยกัน
ตัวอย่าง เราจะอยู่ที่ branch master และต้องการ merge branch feature เข้ามาทำงานร่วมด้วย การ merge แบบ No Fast Forward หรือเรียกอีกอย่างหนึ่งว่า 3-Way Merge
git remote
มักใช้งานเมื่อมีการทำงาน Git อยู่ที่ Local Repository ตั้งแต่แรก หรือต้องการที่จะเปลี่ยน Remote Repository ใช้งานโดยการเพิ่ม URL ของ Remote Repository เข้าไปยังคุณสมบัติของ Git โดยชื่อว่า origin ส่วนใหญ่จะเป็นชื่อ default ที่หลาย ๆ คนเข้าใจตรงกัน แต่เราก็สามารถตั้งชื่ออื่น ๆ ได้
git push
เป็นคำสั่งที่ใช้ส่งการเปลี่ยนแปลงของ source code ที่เก็บอยู่บน Local Repository ขึ้นไปยัง Remote Repository
git fetch
เป็นคำสั่งที่ใช้รับการเปลี่ยนแปลงของ source code ล่าสุดที่อยู่บน Remote Repository ลงมายัง Local Repository แต่ยังไม่ได้ทำการรวม source code (merge)
git pull
[fetch + merge] เป็นคำสั่งที่ใช้รับการเปลี่ยนแปลงของ source code ล่าสุดที่อยู่บน Remote Repository ลงมายัง Local Repository และทำการ auto merge
git clone
เป็นคำสั่งที่ใช้ดึงประวัติทั้งหมดบน Remote Repository ของเพื่อนร่วมทีม ของคนอื่น หรือของเราเอง ที่มีอยู่แล้วบน Git Hosting มาที่เครื่องของเรา คำสั่งนี้จะคล้าย ๆ git init ที่ใช้สร้างระบบ Git ขึ้นมาตอนเริ่มต้น แต่เราจะได้ประวัติเดิมของ repository มาด้วย ทำให้เราเริ่มพัฒนาต่อจากตรงจุดนี้ได้เลย
คำสั่ง git clone นั้นจะ checkout branch หลักมาเป็น master และดึง tag ลงมาทั้งหมด
git tag
เป็นคำสั่งที่ใช้แสดงและสร้าง tag ชื่อขึ้นที่จุด commit นั้น ๆ เปรียบเสมือนการตั้งชื่อขึ้นที่ commit ต่างจากการใช้ git comit -m "message" จะเป็นข้อความเพื่ออธิบายการ commit นั้น
git clean
เป็นคำสั่งที่ใช้แสดงและลบ source code ที่อยู่ในสถานะ Untracked ออกจาก Working Directory
git diff
เป็นคำสั่งที่ใช้แสดงความเปลี่ยนแปลงระหว่าง Working Directory ที่กำลังทำงานอยู่กับ branch หรือ Commit Id ที่ระบุ ตัวอย่างเช่น เราทำงานอยู่ที่ branch develop แล้วทำการเพิ่ม code เมื่อใช้คำสั่ง git diff จะแสดงให้เห็นว่าก่อนหน้านี้เป็นอย่างไรและมีอะไรเพิ่มขึ้นมาบ้าง
git stash
เป็นคำสั่งที่ใช้ซ่อนการเปลี่ยนแปลงใน Working Directory นิยมใช้ก่อนคำสั่ง git pull
git reflog
เป็นคำสั่งที่ใช้แสดงและจัดการกับ Reference Log ของ git repository ส่วนมากใช้กับการกู้ข้อมูลใน commit เมื่อเผลอ git reset ผิด ยกตัวอย่างเช่น ใช้คำสั่ง git reset -hard ย้อนกลับไป 3 commit ก่อนหน้า ทำให้ประวัติของ commit ทั้ง 3 ก่อนหน้าที่จะย้อนมาหายไป เราจะใช้คำสั่งตามด้านล่างนี้
Git Ignore
Git Ignore [.gitignore] ไม่ได้เป็นคำสั่งแต่เป็นคุณสมบัติของ Git โดยการเพิ่มไฟล์ที่ชื่อ .gitignore เข้าไปในระบบของ Git เพื่อทำการบอกให้ Git ไม่ต้องสนใจไฟล์หรือโฟลเดอร์นั้น ๆ
เช่น ไฟล์หรือโฟลเดอร์ที่เป็น output ของการ Build ใน Java (.class) ไฟล์ที่เป็นคุณสมบัติเฉพาะของ IDE หรือ Working Space ก็ไม่ควรแชร์ไปให้คนอื่น ๆ ในทีม
ในกรณีที่มีการเพิ่มไฟล์ที่ไม่ต้องการเข้าไปยังสถานะ Staged แล้ว และเพิ่มไฟล์ .gitignore เข้าไปทีหลัง สามารถใช้คำสั่งนี้เพื่อลบไฟล์หรือโฟลเดอร์ที่ไม่ต้องการออกจากสถานะ Staged และ commit .gitignore เข้าไปอีกครั้ง
เป็นคำสั่งที่ใช้ตรวจสอบสถานะของ source code ในระบบของ Git ซึ่งจะแสดงสถานะที่ได้อธิบายข้างต้นไปแล้วเรื่อง
ศึกษาเพิ่มเติมเรื่อง merge แบบ Fast Forward และ No Fast Forward ได้ที่