ในไดเรกทอรี `.git` มีอะไรอยู่บ้าง?
(blog.meain.io)- คำอธิบายแบบละเอียดเกี่ยวกับไดเรกทอรี
.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 ความคิดเห็น