-
1. Başlangıç
- 1.1 Sürüm Denetimi
- 1.2 Git’in Kısa Tarihçesi
- 1.3 Git Nedir?
- 1.4 Komut Satırı
- 1.5 Git’i Yüklemek
- 1.6 Git’i İlk Defa Kurmak
- 1.7 Yardım Almak
- 1.8 Özet
-
2. Git Temelleri
-
3. Git Dalları
- 3.1 Dallar
- 3.2 Kısaca Dallandırma ve Birleştirme Temelleri
- 3.3 Dal Yönetimi
- 3.4 İş Akışı Dallandırması
- 3.5 Uzak Dallar
- 3.6 Yeniden Temelleme (rebase)
- 3.7 Özet
-
4. Bir Sunucuda Git Kurma
- 4.1 İletişim Kuralları (Protocols)
- 4.2 Bir Sunucuda Git Kurma
- 4.3 SSH Ortak Anahtarınızı Oluşturma
- 4.4 Sunucu Kurma
- 4.5 Git Cini (Daemon)
- 4.6 Akıllı HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Üçüncü Taraf Barındırma (Hosting) Seçenekleri
- 4.10 Özet
-
5. Dağıtık Git
- 5.1 Dağıtık İş Akışları
- 5.2 Projenin Gelişiminde Rol Almak
- 5.3 Bir Projeyi Yürütme
- 5.4 Özet
-
6. GitHub
- 6.1 Bir Projeye Katkıda Bulunmak
- 6.2 Proje Bakımı
- 6.3 Kurumsal Yönetim
- 6.4 GitHub’ı otomatikleştirme
- 6.5 Özet
-
7. Git Araçları
- 7.1 Düzeltme Seçimi
- 7.2 Etkileşimli İzlemleme (Staging)
- 7.3 Saklama ve Silme
- 7.4 Çalışmanızı İmzalama
- 7.5 Arama
- 7.6 Geçmişi Yeniden Yazma
- 7.7 Reset Komutunun Gizemleri
- 7.8 İleri Seviye Birleştirme
- 7.9 Rerere
- 7.10 Git’le Hata Ayıklama
- 7.11 Alt Modüller
- 7.12 Demetleme (Bundling)
- 7.13 Git Nesnesini Değiştirme
- 7.14 Kimlik Bilgisi Depolama
- 7.15 Özet
-
8. Git’i Özelleştirmek
- 8.1 Git Yapılandırması
- 8.2 Git Nitelikleri
- 8.3 Git Kancaları (Hooks)
- 8.4 Bir Örnek: Mecburi Git Politikası
- 8.5 Özet
-
9. Git ve Diğer Sistemler
- 9.1 İstemci Olarak Git
- 9.2 Git’e Geçiş
- 9.3 Özet
-
10. Dahili Git Ögeleri
- 10.1 Tesisat ve Döşeme (Plumbing ve Porcelain)
- 10.2 Git Nesneleri
- 10.3 Git Referansları
- 10.4 Packfiles
- 10.5 Refspec
- 10.6 Transfer Protokolleri
- 10.7 Bakım ve Veri Kurtarma
- 10.8 Ortam Değişkenleri
- 10.9 Özet
-
A1. Ek bölüm A: Diğer Ortamlarda Git
- A1.1 Görsel Arayüzler
- A1.2 Visual Studio ile Git
- A1.3 Visual Studio Code ile Git
- A1.4 Eclipse ile Git
- A1.5 Sublime Text ile Git
- A1.6 Bash ile Git
- A1.7 Zsh ile Git
- A1.8 PowerShell ile Git
- A1.9 Özet
-
A2. Ek bölüm B: Git’i Uygulamalarınıza Gömmek
- A2.1 Git Komut Satırı
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Ek bölüm C: Git Komutları
- A3.1 Kurulum ve Yapılandırma Komutları
- A3.2 Proje Oluşturma Komutları
- A3.3 Kısaca Poz (Snapshot) Alma
- A3.4 Dallandırma ve Birleştirme Komutları
- A3.5 Projeleri Paylaşma ve Güncelleme Komutları
- A3.6 İnceleme ve Karşılaştırma Komutları
- A3.7 Hata Ayıklama (Debugging) Komutları
- A3.8 Yamalama (Patching)
- A3.9 E-Posta Komutları
- A3.10 Harici Sistemler
- A3.11 Yönetim
- A3.12 Tesisat (Plumbing) Komutları
10.1 Dahili Git Ögeleri - Tesisat ve Döşeme (Plumbing ve Porcelain)
Bu bölüme çok daha öndeki bir bölümden atlamış olabilir veya kitabın geri kalanını sırayla okuyarak bu noktaya gelmiş olabilirsiniz. Her iki durumda da, bu bölümde Git’in iç işleyişini ve uygulanmasını ele alacağız. Şunu keşfettik ki bu bilginin anlaşılması, Git’in ne kadar kullanışlı ve güçlü olduğunu kavramak için temel önem taşımaktadır, ancak diğerleri bize bu bilgilerin yeni başlayanlar için kafa karıştırıcı ve gereksiz ölçüde karmaşık olabileceğini savundular. Bu nedenle, bu tartışmayı kitaptaki son bölüm yaptık. Böylece bu bilgiyi öğrenme sürecinizin erken veya geç aşamalarında okuyabilirsiniz. Ne zaman okuyacağınıza dair kararı siz vereceksiniz.
Şimdi burada olduğunuza göre, başlayabiliriz. İlk olarak, henüz net değilse, Git temel olarak bir içerik adreslenebilir dosya sistemidir ve üzerine yazılmış bir VCS kullanıcı arayüzüne sahiptir. Bunun ne anlama geldiğini birazdan daha detaylıca öğreneceksiniz.
Git’in ilk zamanlarında (çoğunlukla v1.5 öncesi), kullanıcı arayüzü bu dosya sistemini vurguladığından; cilalanmış bir VCS yerine, daha karmaşık bir yapıdaydı. Kullanıcı arayüzü diğer sistemler kadar temiz ve kullanımı kolay hale gelene kadar, Son birkaç yılda, arayüz sürekli olarak geliştirildi. Ancak, kompleks ve öğrenmesi zor olan erken dönem Git kullanıcı arayüzüne dair bir sterotip hala varlığını sürdürmektedir.
İçerik adreslenebilir dosya sistem katmanı inanılmaz derecede harika olduğu için, bu bölümde önce bunu ele alacağız; daha sonra, zamanla karşılaşabileceğiniz taşıma mekanizmalarını ve repo bakım görevlerini öğreneceksiniz.
Tesisat ve Döşeme (Plumbing ve Porcelain)
Bu kitap, checkout
, branch
, remote
gibi yaklaşık 30 alt komutla Git’in nasıl kullanılacağını anlatır.
Ancak, Git başlangıçta tamamen kullanıcı dostu bir sürüm kontrol sistemi olmaktan ziyade bir araç seti olarak tasarlandığı için, düşük seviyeli işler yapan ve UNIX tarzında birbirine zincirlenebilen veya betiklerden çağrılabilen bir dizi alt komut içerir.
Bu komutlar genellikle Git’in "tesisat" (plumbing) komutları olarak adlandırılırken, daha kullanıcı dostu komutlar "döşeme" (porcelain) komutları olarak adlandırılır.
Şu ana kadar fark etmiş olabileceğiniz gibi, bu kitabın ilk dokuz bölümü neredeyse tamamen "döşeme" komutlarıyla ilgilidir. Ancak bu bölümde, Git’in iç işleyişine erişim sağladığı ve Git’in birşeyleri nasıl ve neden yaptığını göstermek için, çoğunlukla daha düşük seviyeli "tesisat" komutlarla ilgileneceksiniz. Bu komutların çoğu, komut satırında manuel olarak kullanılmaktan ziyade, yeni araçlar ve özel betikler için yapı taşları olarak kullanılmak üzere tasarlanmıştır.
Yeni veya varolan bir dizinde git init
komutunu çalıştırdığınızda, Git .git
adında neredeyse herşeyin saklandığı ve manipüle edildiği bir dizin oluşturur.
Reponuzu yedeklemek veya kopyalamak isterseniz, bu tek dizini başka bir yere kopyalamak neredeyse ihtiyacınız olan her şeyi size sağlar.
Bu bölüm temel olarak, bu dizinde görebileceğiniz şeylerle ilgilidir.
Yeni başlatılmış bir .git
dizini genellikle şöyle görünür:
$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/
Kullandığınız Git sürümüne bağlı olarak bazı ek içerikler görebilirsiniz, ancak yeni bir git init
reposu böyledir (varsayılan olarak gördüğünüz şey budur).
description
dosyası yalnızca GitWeb programı tarafından kullanılır, bu yüzden endişelenmeyin.
config
dosyası, projenize özgü yapılandırma seçeneklerinizi içerir ve info
dizini, bir .gitignore
dosyasında izlemek istemediğiniz dışlanan desenler için genel bir dışlama dosyasını .
hooks
dizini, istemci veya sunucu tarafı kancalarınızı içerir ve bunlar Git Kancaları (Hooks) bölümünde detaylı olarak ele alınmaktadır.
Bu, dört önemli giriş bırakır: HEAD
(henüz oluşturulmamıştır), index
dosyaları, objects
ve refs
dizinleri.
Bunlar Git’in temel parçalarıdır.
objects
dizini veritabanınızın tüm içeriğini depolar, refs
dizini bu verideki katkı nesnesi işaretçilerini depolar (dallar, etiketler, uzaklar ve daha fazlası), HEAD
dosyası şu anda bulunduğunuz dalı gösterir ve index
dosyası ise Git’in izlem alanı bilgilerinizi depoladığı yerdir.
Şimdi Git’in nasıl çalıştığını görmek için bu bölümlerin her birine detaylı olarak bakacağız.