Git Depo Yapısı
Sürüm kontrolü modern yazılım geliştirmenin önemli bir parçasıdır ve doğru araç ve hizmetlere sahip olmak projelerinizi yönetmeyi çok daha kolay hale getirebilir. AlexHost, Git depolarınızı barındırmak için mükemmel olan sağlam ve güvenli VPS barındırma çözümleri sunar. Tam kök erişimi, özel IPv4 adresleri, ultra hızlı NVMe depolama ve çeşitli işletim sistemleri desteği gibi özelliklerle AlexHost, sorunsuz performans ve güvenilirlik sağlar. İster tek başına bir geliştirici olun, ister büyük bir ekibin parçası olun, AlexHost projelerinizi etkili bir şekilde yönetmek için gereken esnekliği ve gücü sağlar.
Bir Git deposunun yapısını anlamak, projenizin kaynak kodunu verimli bir şekilde yönetmek, değişiklikleri izlemek ve başkalarıyla işbirliği yapmak için çok önemlidir.
İşte bir Git deposunun temel bileşenlerinin ve yapısının bir dökümü:
1. Çalışma Rehberi
Çalışma dizini, projenizdeki gerçek dosyaların bulunduğu yerdir. Bir Git deposunu klonladığınızda, çalışma dizininize yerleştirilen tüm izlenen dosyaların bir kopyasını alırsınız. Bu, dosyaları aktif olarak düzenlediğiniz, değişiklikler yaptığınız ve yeni içerik eklediğiniz alandır.
- Değiştirilmiş Dosyalar: Çalışma dizininizde düzenlediğiniz herhangi bir dosya, siz onu sahneleyene veya değişiklikleri sıfırlayana kadar değiştirilmiş olarak kabul edilecektir.
- İzlenmemiş Dosyalar: Git tarafından henüz takip edilmeyen dosyalar, sahnelenip işlenene kadar çalışma dizininde takip edilmemiş olarak görünecektir.
2. Hazırlama Alanı (Dizin)
Hazırlama alanı (dizin olarak da adlandırılır), dosyalarda yapılan değişikliklerin depoya işlenmeden önce toplandığı bir ara yerdir. Git add komutunu kullanarak hazırlama alanına dosya veya değişiklik eklersiniz. Hazırlama alanındaki değişiklikler bir sonraki işlemin bir parçası olacaktır.
- Hazırlama Alanına Değişiklikler Ekleyin:git add
- Hazırlama Alanını Görüntüleyin: Git status kullanarak hazırlama alanında ne olduğunu görebilirsiniz.
3. Git Dizini (.git klasörü)
.git klasöründe saklanan Git dizini, herhangi bir Git deposunun kalbidir. Projenizin geçmişi, yapılandırması ve mevcut durumu hakkında tüm temel bilgileri içerir. Bu dizin, bir Git deposunu başlattığınızda veya klonladığınızda otomatik olarak oluşturulur.
.git Dizininin Temel Bileşenleri:
- HEAD: Şubenizdeki geçerli commit’e işaret eden bir dosya.
- Şubeler: Depodaki şubeler hakkında bilgi içerir.
- Nesneler: Taahhütler, bloblar (dosya verileri) ve ağaçlar (dizin yapısı) gibi tüm nesneleri depolar.
- Refs: Başlıklar (dallar), etiketler ve uzaktan izleme dalları dahil olmak üzere taahhütlere referanslar içerir.
- Config: Yerel deponuz için uzaktan kumandalar veya kullanıcı bilgileri gibi ayarların depolandığı yapılandırma dosyası.
- Günlükler: Taahhütler, çıkışlar ve yeniden sürümler gibi tüm faaliyetler için günlükleri depolar.
- Kancalar: Belirli Git olaylarından (örn. commit, push) önce veya sonra eylemleri tetikleyebilen özel komut dosyaları.
4. Taahhüt Geçmişi
Her commit, deponuzun belirli bir zamandaki anlık görüntüsüdür. Bir commit, commit mesajı, yazar ve zaman damgası gibi meta verilerle birlikte dosyalarda yapılan değişiklikleri içerir. Taahhütler projenizin geçmişini oluşturur.
- Taahhütler .git/objects dizininde saklanır.
- Her commit bir önceki commit’e işaret eder (ilki hariç) ve projenin geçmişi olarak görselleştirilebilecek bağlantılı bir zincir oluşturur.
5. Şubeler
Dal, projenizin farklı sürümleri üzerinde aynı anda çalışmanıza olanak tanıyan belirli bir commit’in işaretçisidir. Git, varsayılan olarak main (veya eski sürümlerde master) adlı bir dal ile başlar.
- Şube İşaretçisi: Dallar basitçe bir commit’in işaretçileridir. Yeni bir dal oluşturmak, mevcut commit’e bir işaretçi oluşturmak anlamına gelir ve diğer dalları etkilemeden bu dal üzerinde yeni commit’ler yapmanıza olanak tanır.
- HEAD: Git’teki HEAD işaretçisi, üzerinde çalıştığınız geçerli dalı veya commit’i gösterir. Genellikle mevcut dalınızdaki en son işleme işaret eder.
6. Etiketler
Etiketler, Git geçmişinizdeki belirli noktalara yapılan referanslardır ve genellikle sürüm versiyonlarını işaretlemek için kullanılır (örn. v1.0, v2.0). Dalların aksine, etiketler yeni işlemlerle güncellenmez.
- Hafif Etiketler: Bunlar, bir dala benzer şekilde, bir commit için basit işaretçilerdir.
- Açıklamalı Etiketler: Etiketleyicinin adı, tarih ve etiket mesajı gibi ek meta veriler içerir.
7. Uzaktan Kumandalar
Git’teki bir remote, deponuzun başka bir yerde, genellikle GitHub, GitLab veya Bitbucket gibi platformlarda barındırılan bir kopyasına referanstır. Remote’lar işbirliği için kullanılır ve değişiklikleri deponun diğer kopyalarına göndermenize veya onlardan çekmenize olanak tanır.
- Köken: Varsayılan olarak, birincil uzak depo origin olarak adlandırılır.
8. Git’teki Nesneler
Git nesneleri dizini (.git/objects), deponun geçmişini oluşturan dört ana nesne türünü içerir:
- Blob: Bir dosyanın gerçek içeriğini depolar.
- Ağaç: Bir dizini temsil eder: Bir dizini temsil eder, dosya adlarını blob nesnelerine ve alt dizinlere (diğer ağaç nesneleri) eşler.
- Commit: Her değişiklikle ilgili meta verileri (yazar, tarih, mesaj) depolar ve bir ağaç nesnesine işaret eder.
- Etiket: Bir commit’e işaret eder ve etiketleyici ve mesaj hakkındaki bilgileri saklar (açıklamalı etiketler durumunda).
9. Kancalar
Git, Git iş akışının çeşitli aşamalarında tetiklenebilecek özel komut dosyaları (kancalar) tanımlamanıza olanak tanır. Bu komut dosyaları işleme, itme veya birleştirme gibi olaylardan sonra veya önce otomatik olarak çalışabilir. Kancalar kod kalitesini zorlayabilir, testleri çalıştırabilir veya CI/CD boru hatlarını tetikleyebilir.
Kancalar .git/hooks/ dizininde saklanır.
- Ön commit kancası: Bir commit oluşturulmadan önce çalışır.
- İşlem sonrası kancası: Bir commit oluşturulduktan sonra çalışır.
10. Günlükler
Git, depodaki taahhütler, onaylar, birleştirmeler ve geri dönüşler gibi tüm eylemlerin günlüklerini saklar. Bu günlükler, depoda gerçekleştirilen eylemlerin hata ayıklamasına ve gözden geçirilmesine yardımcı olur.
- Git Reflog: HEAD işaretçisindeki tüm değişikliklerin kaydını tutarak dal sıfırlama gibi eylemlerden kurtulmanızı sağlar.
Git Depo Yapısının Özeti
- Çalışma Dizini: Dosyaları ve dizinleri mevcut durumlarında içerir.
- Hazırlama Alanı (Dizin): Değişikliklerin işlenmeden önce hazırlandığı yer.
- Git Dizini (.git): Nesneler, yapılandırma ve günlükler dahil olmak üzere temel verileri tutar.
- İşlemeler: Projenin geçmişini oluşturan meta verilerle birlikte değişikliklerin kaydı.
- Dallar: Paralel geliştirmeye izin veren belirli taahhütlere işaretçiler.
- Etiketler: Genellikle sürümleri işaretlemek için belirli taahhütlere adlandırılmış referanslar.
- Uzak Noktalar: İşbirliği için başka bir yerde barındırılan depolara referanslar.
- Nesneler: Git’teki bloblar, ağaçlar ve taahhütler dahil olmak üzere temel bileşenler.
Bu yapıyı anlayarak Git deponuzda etkili bir şekilde gezinebilir ve yönetebilir, proje geliştirme süreciniz boyunca sorunsuz işbirliği ve sürüm kontrolü sağlayabilirsiniz.