Struktur Repositori Git
Struktur Repositori Git Master di VPS AlexHost Anda
Mengapa menggunakan Git di AlexHost? Git adalah landasan kontrol versi, dan menghosting repositori Anda di VPS AlexHost memberi Anda kontrol penuh dengan akses root, penyimpanan NVMe yang sangat cepat, dan lingkungan yang terlindungi dari DDoS yang aman. Baik Anda seorang pengembang tunggal atau mengelola tim, VPS AlexHost yang fleksibel memastikan alur kerja Git Anda berjalan dengan lancar. Panduan ini menguraikan struktur repositori Git dan cara memanfaatkannya pada peladen AlexHost Anda.
1. Direktori Kerja
Direktori kerja adalah tempat di mana file aktual dalam proyek Anda berada. Ketika Anda mengkloning repositori Git, Anda mendapatkan salinan semua berkas yang dilacak, yang ditempatkan di direktori kerja Anda. Ini adalah area di mana Anda secara aktif mengedit file, membuat perubahan, dan menambahkan konten baru
- File yang dimodifikasi: File apa pun yang Anda edit di direktori kerja Anda akan dianggap dimodifikasi hingga Anda melakukan pemeringkatan atau mengatur ulang perubahannya.
- File yang Belum Dilacak: File yang belum dilacak oleh Git akan muncul di direktori kerja sebagai file yang tidak terlacak sampai file tersebut dipentaskan dan dikomit.
2. Area Staging (Indeks)
Area pementasan (juga disebut indeks) adalah tempat perantara di mana perubahan pada file dikumpulkan sebelum dikomit ke repositori. Anda menambahkan file atau perubahan ke area pementasan menggunakan perintah git add. Perubahan di area staging akan menjadi bagian dari komit berikutnya
- Menambahkan Perubahan ke Area Staginggit tambahkan <file>
- Melihat Area Staging: Anda dapat melihat apa yang ada di area pementasan menggunakan status git.
3. Direktori Git (folder .git)
Direktori Git, yang disimpan di folder .git, adalah jantung dari repositori Git. Direktori ini berisi semua informasi penting tentang riwayat, konfigurasi, dan status proyek Anda saat ini. Direktori ini secara otomatis dibuat ketika Anda menginisialisasi atau mengkloning repositori Git
Komponen Utama Direktori .git:
- HEAD: File yang menunjuk ke komit saat ini di cabang Anda.
- Cabang: Berisi informasi tentang cabang-cabang di repositori.
- Objek: Menyimpan semua objek seperti komit, gumpalan (data file), dan pohon (struktur direktori).
- Referensi: Berisi referensi untuk komit, termasuk kepala (cabang), tag, dan cabang pelacakan jarak jauh.
- Config: File konfigurasi untuk repositori lokal Anda, tempat pengaturan seperti remote atau informasi pengguna disimpan.
- Log: Menyimpan log untuk semua aktivitas seperti komit, checkout, dan rebase.
- Kait (Hooks): Skrip khusus yang dapat memicu tindakan sebelum atau sesudah peristiwa Git tertentu (misalnya, komit, push).
4. Riwayat Komit
Setiap komit adalah cuplikan repositori Anda pada titik waktu tertentu. Sebuah komit mencakup perubahan pada file bersama dengan metadata seperti pesan komit, penulis, dan stempel waktu. Komit membentuk riwayat proyek Anda
- Komit disimpan di direktori .git/objects.
- Setiap komit menunjuk ke komit sebelumnya (kecuali komit pertama), membentuk rantai yang terhubung yang dapat divisualisasikan sebagai riwayat proyek.
5. Cabang
Cabang adalah penunjuk ke komit tertentu, yang memungkinkan Anda untuk mengerjakan berbagai versi proyek Anda secara bersamaan. Secara default, Git dimulai dengan cabang yang disebut main (atau master di versi yang lebih lama)
- Penunjuk Cabang: Cabang hanyalah penunjuk ke sebuah komit. Membuat cabang baru berarti membuat penunjuk ke komit saat ini, sehingga kamu bisa membuat komit baru di cabang tersebut tanpa memengaruhi cabang lainnya.
- HEAD: Penunjuk HEAD di Git menunjukkan cabang atau komit yang sedang kamu kerjakan. Biasanya menunjuk ke komit terbaru di cabang Anda saat ini.
6. Tag
Tag adalah referensi ke titik-titik tertentu dalam riwayat Git Anda, yang sering digunakan untuk menandai versi rilis (mis., v1.0, v2.0). Tidak seperti cabang, tag tidak diperbarui dengan komit baru
- Tag Ringan: Ini adalah penunjuk sederhana untuk sebuah komit, mirip dengan cabang.
- Tag beranotasi: Berisi metadata tambahan, seperti nama penanda, tanggal, dan pesan tag.
7. Remote
Remote di Git adalah referensi ke salinan repositori Anda yang di-host di tempat lain, sering kali di platform seperti GitHub, GitLab, atau Bitbucket. Remote digunakan untuk kolaborasi, memungkinkan Anda untuk mendorong perubahan atau menarik perubahan dari salinan repositori lainnya
- Asal: Secara default, repositori jarak jauh utama disebut asal.
8. Objek di Git
Direktori objek Git (.git/objects) berisi empat jenis objek utama yang membentuk riwayat repositori
- Gumpalan: Menyimpan konten aktual dari sebuah file.
- Pohon: Merupakan direktori, memetakan nama file ke objek gumpalan dan subdirektori (objek pohon lainnya).
- Komit: Menyimpan metadata tentang setiap perubahan (penulis, tanggal, pesan) dan menunjuk ke objek pohon.
- Tag: Menunjuk ke komit dan menyimpan informasi tentang penanda dan pesan (dalam kasus tag beranotasi).
9. Pengait
Git memungkinkan Anda untuk menentukan skrip khusus (hook) yang dapat memicu pada berbagai tahap dalam alur kerja Git. Skrip ini dapat berjalan secara otomatis setelah atau sebelum peristiwa seperti melakukan komit, push, atau penggabungan. Hooks dapat menegakkan kualitas kode, menjalankan pengujian, atau memicu pipeline CI/CD. Hooks disimpan di direktori .git/hooks/
- Hook pra-komit: Berjalan sebelum komit dibuat.
- Pengait pascakomit: Berjalan setelah komit dibuat.
10. Log
Git menyimpan log semua tindakan di repositori, seperti komit, checkout, penggabungan, dan pengembalian. Log ini membantu dalam men-debug dan meninjau tindakan yang dilakukan di repositori
- Git Reflog: Menyimpan catatan semua perubahan pada penunjuk HEAD, sehingga Anda dapat memulihkan dari tindakan seperti pengaturan ulang cabang.
Ringkasan Struktur Repositori Git
- Direktori Kerja: Berisi file dan direktori dalam kondisi saat ini.
- Area Pementasan (Indeks): Tempat perubahan dipentaskan sebelum dilakukan.
- Direktori Git (.git): Menampung data inti, termasuk objek, konfigurasi, dan log.
- Komit: Catatan perubahan dengan metadata, membentuk riwayat proyek.
- Cabang: Penunjuk ke komit tertentu yang memungkinkan pengembangan paralel.
- Tag: Referensi bernama untuk komit tertentu, biasanya untuk menandai rilis.
- Remote: Referensi ke repositori yang dihosting di tempat lain untuk kolaborasi.
- Objek: Komponen inti dalam Git, termasuk gumpalan, pohon, dan komit.
Dengan memahami struktur ini, Anda dapat menavigasi dan mengelola repositori Git secara efektif, memastikan kolaborasi yang lancar dan kontrol versi di seluruh pengembangan proyek Anda.