- คำอธิบายแบบละเอียดเกี่ยวกับไดเรกทอรี
.git ที่ถูกสร้างขึ้นเมื่อรัน git init
- ภายในไดเรกทอรี
.git มีทั้งไฟล์และโฟลเดอร์หลายอย่าง เช่น config, HEAD, hooks, objects, refs เป็นต้น
- ไฟล์ข้อความ
config มีการตั้งค่า git ของรีโพซิทอรีปัจจุบัน รวมถึงค่าพื้นฐานอย่างผู้เขียนและโหมดไฟล์
- ไฟล์
HEAD มี head ปัจจุบันของรีโพซิทอรีซึ่งชี้ไปยังบรานช์เริ่มต้น โดยอาจเป็น master หรือ main ตามที่ตั้งไว้เป็นบรานช์เริ่มต้น
- ไดเรกทอรี
hooks เก็บสคริปต์ทั้งหมดที่สามารถรันได้ก่อนและหลังการทำงานของ git
- ไดเรกทอรี
objects เก็บข้อมูลของไฟล์และคอมมิตในรีโพซิทอรี
- ไดเรกทอรี
refs เก็บรีเฟอเรนซ์หรือพอยน์เตอร์ที่ชี้ไปยังบรานช์และแท็ก
- เมื่อมีการเพิ่มไฟล์เข้าไปในรีโพซิทอรี จะมีการแก้ไขไฟล์
index และเพิ่มโฟลเดอร์กับไฟล์ใหม่ในไดเรกทอรี objects
- ไฟล์ใหม่ในไดเรกทอรี
objects จะมีชนิด ขนาด และข้อมูลของไฟล์ที่เพิ่มเข้าไป และชื่อไฟล์จะมาจากค่า sha1 ของเนื้อหา
- เมื่อมีการคอมมิตไฟล์ จะเกิดการเปลี่ยนแปลงหลายอย่าง เช่น การสร้างไฟล์ใหม่ชื่อ
COMMIT_EDITMSG ที่มีข้อความคอมมิต และการเพิ่มอ็อบเจ็กต์ใหม่ในไดเรกทอรี objects
- การสร้างบรานช์ใน git เป็นกระบวนการง่าย ๆ ที่รวมถึงการเพิ่มไฟล์ใหม่ในไดเรกทอรี
refs/heads โดยมีชื่อบรานช์และ ID ของคอมมิตล่าสุด
- การ checkout บรานช์คือการอัปเดตไฟล์
.git/HEAD ให้ชี้ไปยังบรานช์ที่ถูก checkout อยู่
- การ merge บรานช์สามารถทำได้ 3 แบบ: fast forward merge, rebase merge และการสร้าง merge commit แยกต่างหาก
- เมื่อมีการ push รีโพซิทอรี ข้อมูลทั้งหมดในไดเรกทอรี
objects และบรานช์กับแท็กทั้งหมดภายใต้ refs ที่ถูก push อย่างชัดเจนจะถูกส่งไปยังรีโพซิทอรี git อื่น
1 ความคิดเห็น