Repository ใน Git: คืออะไร, มีกี่ประเภท และทำงานอย่างไร

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-05-09 เวลาอ่าน: 8 นาที

Git Repository — คือพื้นที่จัดเก็บซอร์สโค้ดของโปรเจกต์ที่ Git ติดตามการเปลี่ยนแปลงไฟล์ทุกครั้งตลอดการพัฒนา ที่เก็บประกอบด้วยประวัติทั้งหมดของ commits, branches และ tags ซึ่งช่วยให้นักพัฒนาสามารถทำงานร่วมกันบนโค้ดได้ ตาม Git, 2024 ที่เก็บเป็นพื้นฐานของระบบควบคุมเวอร์ชันใด ๆ และถูกใช้ในโปรเจกต์หลายล้านโปรเจกต์ทั่วโลก

ประเด็นสำคัญ

  • Git Repository — คือไดเรกทอรีโปรเจกต์ที่มีโฟลเดอร์บริการ .git ซึ่งเก็บประวัติการเปลี่ยนแปลงทั้งหมด
  • ที่เก็บในเครื่อง — อยู่บนคอมพิวเตอร์ของนักพัฒนาและอนุญาตให้ทำงานกับโค้ดโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต
  • ที่เก็บระยะไกล — โฮสต์อยู่บนเซิร์ฟเวอร์ GitHub, GitLab หรือ Bitbucket และใช้สำหรับการซิงโครไนซ์ระหว่างผู้ร่วมงาน
  • Git — จัดเก็บข้อมูลเป็นภาพรวมของไฟล์ ไม่ใช่รายการการเปลี่ยนแปลง ซึ่งช่วยเร่งการดำเนินการแตกกิ่งและรวม
  • ระบบควบคุมเวอร์ชัน — แก้ปัญหาการทำงานพร้อมกันในโปรเจกต์เดียวกัน ป้องกันความขัดแย้งเมื่อรวมโค้ด

Repository ใน Git คืออะไร

Git Repository — คือโครงสร้างข้อมูลที่ระบบควบคุมเวอร์ชันจัดเก็บข้อมูลเมตาและออบเจกต์ที่อธิบายประวัติการเปลี่ยนแปลงไฟล์ของโปรเจกต์ เมื่อนักพัฒนาเริ่มต้นที่เก็บด้วยคำสั่ง git init, Git จะสร้างโฟลเดอร์ที่ซ่อนอยู่ .git ในรากของโปรเจกต์

ภายในโฟลเดอร์นี้มีออบเจกต์ การอ้างอิง และไฟล์คอนฟิกทั้งหมดที่จำเป็นสำหรับการทำงานของระบบ ที่เก็บไม่ได้ผูกติดกับตำแหน่งเฉพาะ — นักพัฒนาสามารถสร้างมันในเครื่องแล้วเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลได้

Git ใช้โมเดล ที่เก็บแบบกระจาย: สมาชิกแต่ละคนในโปรเจกต์มีสำเนาประวัติทั้งหมดบนคอมพิวเตอร์ของตนเอง ซึ่งหมายความว่าการดำเนินการส่วนใหญ่ — commit, ดูประวัติ, สร้างสาขา — จะดำเนินการในเครื่องโดยไม่ต้องติดต่อเซิร์ฟเวอร์

ตาม เอกสารของ Git, สถาปัตยกรรมแบบกระจายทำให้ระบบทนทานต่อข้อผิดพลาด: หากเซิร์ฟเวอร์ล่ม ที่เก็บในเครื่องใดก็ตามสามารถเป็นแหล่งสำหรับกู้คืนประวัติทั้งหมดของโปรเจกต์ได้

ที่เก็บในเครื่องและที่เก็บระยะไกล

ที่เก็บในเครื่อง — คือสำเนาของโปรเจกต์บนคอมพิวเตอร์ของนักพัฒนา ประกอบด้วยประวัติทั้งหมดของ commits, สาขาและแท็ก และอนุญาตให้ดำเนินการ commit, branch, merge และ rebase โดยไม่ต้องเชื่อมต่อเครือข่าย

ที่เก็บระยะไกล — โฮสต์บนเซิร์ฟเวอร์และทำหน้าที่เป็นจุดซิงโครไนซ์สำหรับสมาชิกทุกคนในทีม นักพัฒนาส่งการเปลี่ยนแปลงด้วยคำสั่ง git push และรับการเปลี่ยนแปลงของผู้อื่นด้วย git pull

การเชื่อมต่อระหว่างที่เก็บในเครื่องและที่เก็บระยะไกลถูกกำหนดค่าผ่าน remote origin — URL ของเซิร์ฟเวอร์ที่เก็บไว้ในคอนฟิก Git ที่เก็บในเครื่องหนึ่งสามารถเชื่อมต่อกับที่เก็บระยะไกลหลายแห่ง ซึ่งมีประโยชน์เมื่อทำงานกับ forks

ข้อได้เปรียบหลักของโมเดลนี้คือนักพัฒนาสามารถทำงานบนโค้ดแบบออฟไลน์และซิงโครไนซ์การเปลี่ยนแปลงเมื่อพร้อมที่จะส่งผลลัพธ์เท่านั้น

ความแตกต่างระหว่างที่เก็บในเครื่องและที่เก็บระยะไกล

คุณลักษณะในเครื่องระยะไกล
ตำแหน่งบนคอมพิวเตอร์ของนักพัฒนาบนเซิร์ฟเวอร์ (GitHub, GitLab)
การเข้าถึงแบบออฟไลน์เข้าถึงการดำเนินการทั้งหมดได้เต็มที่ไม่สามารถใช้ได้หากไม่มีการเชื่อมต่อ
การซิงโครไนซ์Push/Pull กับระยะไกลรับ push จากในเครื่อง
การสำรองข้อมูลไม่ได้รับการป้องกันจากการสูญหายของข้อมูลจัดเก็บบนเซิร์ฟเวอร์พร้อมการสำรอง

Git จัดเก็บข้อมูลใน Repository อย่างไร

โมเดลการจัดเก็บของ Git แตกต่างจากระบบควบคุมเวอร์ชันอื่นโดยพื้นฐาน แทนที่จะจัดเก็บรายการการเปลี่ยนแปลง (เดลต้า) ระหว่างเวอร์ชัน Git จะจัดเก็บภาพรวมที่สมบูรณ์ของไฟล์โปรเจกต์ทั้งหมด ณ เวลาของแต่ละ commit

แต่ละออบเจกต์ในที่เก็บถูกระบุโดย SHA-1 hash เฉพาะ 40 ตัวอักษร หากเนื้อหาของไฟล์ไม่เปลี่ยนแปลงระหว่าง commits, Git จะไม่สร้างออบเจกต์ใหม่แต่ใช้ซ้ำของเดิม — ซึ่งช่วยประหยัดพื้นที่

Git ใช้ออบเจกต์สี่ประเภท: blob (เนื้อหาไฟล์), tree (โครงสร้างไดเรกทอรี), commit (ภาพรวมพร้อมข้อมูลเมตา) และ tag (การอ้างอิงที่มีชื่อถึง commit) ออบเจกต์ทั้งหมดถูกเก็บในโฟลเดอร์ .git/objects

ตาม Git Internals, โมเดลออบเจกต์ของ Git รับประกันความสมบูรณ์ของข้อมูล: การเปลี่ยนแปลงใด ๆ ในเนื้อหาไฟล์จะสร้าง hash ใหม่ ทำให้ไม่สามารถเปลี่ยนแปลงประวัติโดยไม่ถูกตรวจจับได้

โครงสร้างของโฟลเดอร์ .git

โฟลเดอร์ .git คือหัวใจของที่เก็บ หากไม่มีมัน Git จะไม่สามารถติดตามการเปลี่ยนแปลงได้ และไดเรกทอรีธรรมดาก็เป็นเพียงชุดของไฟล์ การทำความเข้าใจโครงสร้างของโฟลเดอร์นี้ช่วยวินิจฉัยปัญหากับที่เก็บ

  • objects/ — ออบเจกต์ทั้งหมดของที่เก็บ: blobs, trees, commits, tags ถูกจัดเก็บในรูปแบบบีบอัด
  • refs/ — การอ้างอิงถึง commits: heads (สาขา), tags (ป้าย), remotes (สาขาระยะไกล)
  • HEAD — ไฟล์ที่ชี้ไปยังสาขาที่ใช้งานอยู่หรือ commit ปัจจุบัน
  • config — การตั้งค่าที่เก็บ: URL ระยะไกล, ชื่อผู้ใช้, อีเมล และพารามิเตอร์อื่น ๆ
  • index — พื้นที่ staging ที่ Git เก็บข้อมูลเกี่ยวกับไฟล์ที่เตรียมไว้สำหรับ commit
  • logs/ — บันทึกการอัปเดตการอ้างอิง (reflog) ที่เก็บประวัติการเคลื่อนไหวของ HEAD และสาขา

ไฟล์ HEAD สมควรได้รับความสนใจเป็นพิเศษ ในสถานะปกติมันมีการอ้างอิงเชิงสัญลักษณ์ไปยังสาขา เช่น ref: refs/heads/main ในสถานะ detached HEAD มันชี้ไปยัง commit โดยตรง — ซึ่งหมายความว่า commits ใหม่จะไม่ถูกผูกติดกับสาขาใด

การดำเนินการพื้นฐานกับ Repository

การทำงานกับ Git repository รวมถึงชุดการดำเนินการพื้นฐานที่นักพัฒนาทำทุกวัน แต่ละการดำเนินการจะเปลี่ยนสถานะของที่เก็บโดยการเพิ่มออบเจกต์ใหม่หรือย้ายการอ้างอิง

  • git init — สร้างที่เก็บว่างใหม่ในไดเรกทอรีปัจจุบัน Git สร้างโฟลเดอร์ .git พร้อมโครงสร้างเริ่มต้น
  • git clone — คัดลอกที่เก็บระยะไกลที่มีอยู่ไปยังเครื่องในเครื่องพร้อมกับประวัติ commits ทั้งหมด
  • git add — เพิ่มการเปลี่ยนแปลงไฟล์ไปยังพื้นที่ staging (ดัชนี) เพื่อเตรียมสำหรับ commit
  • git commit — สร้างภาพรวมของโปรเจกต์ตามข้อมูลจากดัชนีและบันทึกเป็นออบเจกต์ commit ใหม่
  • git push — ส่ง commits ใหม่จากที่เก็บในเครื่องไปยังที่เก็บระยะไกล อัปเดตสาขาบนเซิร์ฟเวอร์
  • git pull — ดึง commits ใหม่จากที่เก็บระยะไกลและรวมเข้ากับสาขาในเครื่องปัจจุบัน

การดำเนินการ push และ pull เป็นเพียงอย่างเดียวที่ต้องเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล การดำเนินการอื่นทั้งหมดดำเนินการในเครื่องทั้งหมด ซึ่งรับประกันความเร็วสูงแม้มีปริมาณประวัติมาก

วงจรชีวิตของไฟล์ในที่เก็บ

แต่ละไฟล์ในที่เก็บผ่านสี่สถานะ: untracked (ไม่ถูกติดตาม), modified (ถูกแก้ไข), staged (ถูกเตรียม) และ committed (ถูก commit) Git ติดตามเฉพาะไฟล์ที่ถูกเพิ่มอย่างชัดเจนผ่าน git add หรืออยู่ในประวัติ commits แล้ว

การทำความเข้าใจโมเดลนี้คือกุญแจสำคัญในการทำงานกับ Git อย่างมีประสิทธิภาพ นักพัฒนาสามารถเลือกเตรียมเฉพาะส่วนหนึ่งของไฟล์ที่ถูกแก้ไขสำหรับ commit สร้าง commits ที่สมบูรณ์ตามตรรกะพร้อมคำอธิบายที่ชัดเจน

ที่เก็บระยะไกล มักถูกโฮสต์บนแพลตฟอร์มเฉพาะที่ให้อินเทอร์เฟซเว็บ ระบบจัดการการเข้าถึงและเครื่องมือเพิ่มเติมสำหรับการพัฒนาร่วมกัน

  • GitHub — แพลตฟอร์มที่ใหญ่ที่สุดที่มีมากกว่า 100 ล้านที่เก็บ มี Actions, Pull Requests, Issues และ Wiki ฟรีสำหรับโปรเจกต์สาธารณะ
  • GitLab — แพลตฟอร์มที่มี CI/CD ในตัว, Container Registry และไปป์ไลน์ DevOps ในตัว มีให้เลือกทั้งแบบ SaaS และ self-hosted
  • Bitbucket — โซลูชันจาก Atlassian ที่ผสานรวมกับ Jira และ Trello เป็นที่นิยมในสภาพแวดล้อมองค์กรเนื่องจากตั้งค่าการเข้าถึงที่ยืดหยุ่น

การเลือกแพลตฟอร์มขึ้นอยู่กับขนาดทีม ข้อกำหนดด้านความเป็นส่วนตัวและการผสานรวมที่จำเป็น สำหรับการพัฒนาแอพมือถือ มักเลือก GitHub เนื่องจากการสนับสนุนจากชุมชนที่กว้างขวางและการผสานรวมกับเครื่องมือ CI/CD สำหรับ iOS และ Android

ตัวอย่างคำสั่งสำหรับทำงานกับ Repository

ลองพิจารณาสถานการณ์ในทางปฏิบัติ: นักพัฒนา clone ที่เก็บที่มีอยู่ สร้างสาขาใหม่ ทำการเปลี่ยนแปลงและส่งไปยังเซิร์ฟเวอร์ แต่ละคำสั่งแสดงการทำงานกับส่วนประกอบต่าง ๆ ของที่เก็บ

bash
# การโคลนที่เก็บระยะไกล
git clone https://github.com/user/mobile-app.git

# การนำทางไปยังไดเรกทอรีโปรเจกต์
cd mobile-app

# การสร้างสาขา feature ใหม่และสลับไปยังมัน
git checkout -b feature/auth

# การตรวจสอบสถานะของไฟล์ที่ถูกแก้ไข
git status

# การเพิ่มการเปลี่ยนแปลงทั้งหมดไปยังพื้นที่ staging
git add .

# การสร้าง commit พร้อมคำอธิบาย
git commit -m "Add authentication module"

# การส่งการเปลี่ยนแปลงไปยังที่เก็บระยะไกล
git push origin feature/auth

คำสั่ง git status เป็นหนึ่งในคำสั่งที่มีประโยชน์ที่สุดในการทำงานประจำวัน มันแสดงให้เห็นว่าไฟล์ใดถูกแก้ไข ไฟล์ใดถูกเตรียมสำหรับ commit และไฟล์ใดที่ไม่ถูกติดตามโดย Git เลย

การดูประวัติ commits

สำหรับการวิเคราะห์ประวัติที่เก็บ ใช้คำสั่ง git log พร้อมกับแฟลกรูปแบบต่าง ๆ มันแสดงลำดับเวลาของ commits, ผู้เขียน, วันที่และตัวระบุ SHA-1

bash
# การดูประวัติพร้อมการแสดงกราฟสาขา
git log --oneline --graph --all

# การดูการเปลี่ยนแปลงใน commit ที่ระบุ
git show a1b2c3d

# การเปรียบเทียบสถานะปัจจุบันกับ commit ล่าสุด
git diff HEAD

# การดูประวัติของไฟล์ที่ระบุ
git log --follow src/MainActivity.kt

แฟลก --graph แสดงกราฟ ASCII ของการแตกสาขา ซึ่งมีประโยชน์โดยเฉพาะในที่เก็บที่มีการทำงานบนหลายสาขา สำหรับโปรเจกต์มือถือที่มีการปล่อยเวอร์ชันบ่อยครั้ง กราฟภาพช่วยประเมินโครงสร้างการพัฒนาได้อย่างรวดเร็ว

คำถามที่พบบ่อย

ที่เก็บแตกต่างจากโปรเจกต์อย่างไร?

ที่เก็บ คือพื้นที่จัดเก็บโค้ดทางเทคนิคที่มีประวัติการเปลี่ยนแปลง โปรเจกต์เป็นแนวคิดที่กว้างกว่าซึ่งรวมถึงที่เก็บ ระบบจัดการงาน เอกสาร และกระบวนการพัฒนา หนึ่งโปรเจกต์สามารถมีหลายที่เก็บ

จะสร้างที่เก็บบน GitHub ได้อย่างไร?

สร้างที่เก็บใหม่ผ่านอินเทอร์เฟซเว็บของ GitHub โดยคลิกปุ่ม New ระบุชื่อ คำอธิบายและระดับการเข้าถึง จากนั้น clone ที่เก็บไปยังเครื่องในเครื่องหรือเชื่อมต่อกับที่เก็บในเครื่องที่มีอยู่ผ่าน git remote add origin

สามารถกู้คืนที่เก็บที่ถูกลบได้หรือไม่?

หากที่เก็บระยะไกลถูกลบจากเซิร์ฟเวอร์แต่นักพัฒนาอย่างน้อยหนึ่งคนมีสำเนาในเครื่อง สามารถกู้คืนที่เก็บได้ เพียงสร้างที่เก็บระยะไกลใหม่และรัน git push --force จากสำเนาในเครื่องที่มีประวัติทั้งหมด

fork ของที่เก็บคืออะไร?

Fork คือสำเนาของที่เก็บของคนอื่นในบัญชีของคุณ คุณได้รับสำเนาประวัติทั้งหมดและสามารถทำการเปลี่ยนแปลงใด ๆ โดยไม่กระทบต่อต้นฉบับ Forks ถูกใช้เพื่อเข้าร่วมโปรเจกต์โอเพนซอร์สผ่าน Pull Request

จะลดขนาดของที่เก็บได้อย่างไร?

ใช้ git gc เพื่อบีบอัดออบเจกต์และลบข้อมูลที่ไม่สามารถเข้าถึงได้ ลบไฟล์ขนาดใหญ่ออกจากประวัติผ่าน git filter-branch หรือ git filter-repo สำหรับโปรเจกต์ที่มีไฟล์ไบนารี ให้พิจารณา Git LFS (Large File Storage)

สรุป

  • Git Repository — คือพื้นที่จัดเก็บโค้ดที่มีประวัติการเปลี่ยนแปลงที่สมบูรณ์ โดยแต่ละ commit คือภาพรวมของไฟล์โปรเจกต์ทั้งหมด ณ เวลาใดเวลาหนึ่ง
  • ที่เก็บในเครื่อง — ถูกจัดเก็บบนคอมพิวเตอร์ของนักพัฒนาและรองรับชุดการดำเนินการ Git ทั้งหมดโดยไม่ต้องเชื่อมต่อเครือข่าย
  • ที่เก็บระยะไกล — ซิงโครไนซ์การทำงานของทีมผ่าน push และ pull ให้แหล่งความจริงเดียวสำหรับผู้เข้าร่วมทั้งหมด
  • โฟลเดอร์ .git — มีข้อมูลบริการทั้งหมด: ออบเจกต์, การอ้างอิงสาขา, คอนฟิกและบันทึกการดำเนินการ reflog
  • GitHub, GitLab และ Bitbucket — เป็นแพลตฟอร์มหลักสำหรับโฮสต์ที่เก็บระยะไกลพร้อมเครื่องมือ CI/CD เพิ่มเติม
  • โมเดลออบเจกต์ของ Git — ใช้ SHA-1 hash เพื่อระบุแต่ละออบเจกต์ รับประกันความสมบูรณ์ของข้อมูลที่เก็บ
  • คำแนะนำ: ทำ commit อย่างน้อยวันละครั้งและซิงโครไนซ์กับที่เก็บระยะไกลหลังจากเสร็จสิ้นแต่ละขั้นตอนของงาน

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม