คำสั่งต่าง ๆ ของ Git

#HelloFront-end #HelloErmine #HelloWorld2021

git config

เป็นคำสั่งที่ใช้แสดงและกำหนดข้อมูลของผู้ใช้เพื่อระบุตัวตน และคุณสมบัติอื่น ๆ ของ Git

git init

เป็นคำสั่งที่ใช้สร้างระบบของ Git ขึ้นมาภายใต้โฟลเดอร์หรือ path นั้น โดยจะสร้างโฟลเดอร์ .git ขึ้นมาเพื่อใช้เก็บสำรองข้อมูลการเปลี่ยนแปลงและคุณสมบัติอื่น ๆ ของ Git

git status

เป็นคำสั่งที่ใช้ตรวจสอบสถานะของ source code ในระบบของ Git ซึ่งจะแสดงสถานะที่ได้อธิบายข้างต้นไปแล้วเรื่อง สถานะต่าง ๆ ของ Git

git add

เป็นคำสั่งที่ใช้เพิ่มการเปลี่ยนแปลงของ source code เข้าไปที่สถานะ Staged

git commit

เป็นคำสั่งที่ใช้ยืนยัน source code ที่อยู่ในสถานะ Staged เข้าไปเก็บไว้ที่ Local Repository

circle-info

ถ้าต้องการเขียนข้อความ commit ยาว ๆ สามารถใช้คำสั่ง git commit ระบบจะเปิดโปรแกรม VI ให้สำหรับเขียนข้อความ

git log

เป็นคำสั่งที่ใช้แสดงประวัติการ commit ที่เก็บไว้ใน repository

git branch

เป็นคำสั่งที่ใช้ในการแสดง branch และสร้าง branch เพื่อแยกสาขาในการพัฒนา ซึ่งทำให้การพัฒนาซอฟต์แวร์มีความยืดหยุ่นมากขึ้น

เรื่องของ branch และ tag มีความเกี่ยวข้องกับเรื่องของ Release Process ของการพัฒนาซอฟต์แวร์ ขึ้นอยู่กับการตกลงกันภายในทีมและรูปแบบที่เหมาะสมกับซอฟต์แวร์ที่กำลังพัฒนา ซึ่งเรียกเทคนิคนี้ว่า Branch Strategy (Git Workflow, Branching Models, Branching Workflow, Git Flow)

circle-info

Release Process คือ การกำหนดเวอร์ชันของซอฟต์แวร์ในแต่ละรอบ เพื่อกำหนด scope ในการวางแผนการพัฒนา และ Deploy ให้ตรงตามรอบนั้น ๆ

git checkout

เป็นคำสั่งที่ใช้ในการสลับ Working Directory ไปยัง branch หรือ commit ที่เราระบุ

git reset

เป็นคำสั่งที่ใช้ย้อนกลับไปที่เวอร์ชัน ก่อนหน้า โดยระบุ branch หรือ Commit Id (SH-1 แบบย่อของ Commit 7 ตัว เช่น 4bcb295) ซึ่งมี option ที่สำคัญ 3 ตัวดังนี้

  1. soft ย้อนการเปลี่ยนแปลง และคงสถานะการเปลี่ยนแปลงของ source code ไว้ที่สถานะ Staged

  2. mixed ย้อนการเปลี่ยนแปลง และคงสถานะการเปลี่ยนแปลงของ source code ไว้ที่สถานะ Working Directory หรือ Modified

  3. hard ย้อนการเปลี่ยนแปลงแบบลบทับการเปลี่ยนแปลงก่อนหน้าทั้งหมด คำสั่งนี้อันตรายเพราะมันจะทำให้ประวัติของ commit ที่เก็บไว้ใน repository หายไป จึงยังไม่เหมาะกับมือใหม่

circle-info

สามารถดู Commit id ได้จากการใช้คำสั่ง git log --oneline

git merge

เป็นคำสั่งที่ใช้ในการรวม branch หรือ commit ทั้งสองเข้าด้วยกัน

ตัวอย่าง เราจะอยู่ที่ branch master และต้องการ merge branch feature เข้ามาทำงานร่วมด้วย การ merge แบบ No Fast Forward หรือเรียกอีกอย่างหนึ่งว่า 3-Way Merge

circle-info

ศึกษาเพิ่มเติมเรื่อง merge แบบ Fast Forward และ No Fast Forward ได้ที่ https://www.somkiat.cc/git-merge/arrow-up-right

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 ก่อนหน้าที่จะย้อนมาหายไป เราจะใช้คำสั่งตามด้านล่างนี้

circle-info

git reflog จะแสดงข้อมูล Reference Log ซึ่งแสดงตำแหน่งของ HEAD ในแต่ละ commit จึงเหมาะแก่การ reset กลับไปที่ตำแหน่งนั้น ๆ

Git Ignore

Git Ignore [.gitignore] ไม่ได้เป็นคำสั่งแต่เป็นคุณสมบัติของ Git โดยการเพิ่มไฟล์ที่ชื่อ .gitignore เข้าไปในระบบของ Git เพื่อทำการบอกให้ Git ไม่ต้องสนใจไฟล์หรือโฟลเดอร์นั้น ๆ

circle-info

.gitignore จะไม่สนใจไฟล์หรือโฟลเดอร์ใด ๆ ก็ตามที่เราเลือก เมื่อทำการ add, push หรือ pull ไฟล์เหล่านั้นจะไม่ถูกนำมารวมด้วย

เช่น ไฟล์หรือโฟลเดอร์ที่เป็น output ของการ Build ใน Java (.class) ไฟล์ที่เป็นคุณสมบัติเฉพาะของ IDE หรือ Working Space ก็ไม่ควรแชร์ไปให้คนอื่น ๆ ในทีม

ในกรณีที่มีการเพิ่มไฟล์ที่ไม่ต้องการเข้าไปยังสถานะ Staged แล้ว และเพิ่มไฟล์ .gitignore เข้าไปทีหลัง สามารถใช้คำสั่งนี้เพื่อลบไฟล์หรือโฟลเดอร์ที่ไม่ต้องการออกจากสถานะ Staged และ commit .gitignore เข้าไปอีกครั้ง

Last updated

Was this helpful?