-
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ı
A3.3 Ek bölüm C: Git Komutları - Kısaca Poz (Snapshot) Alma
Kısaca Poz (Snapshot) Alma
İçeriği hazırlama ve geçmişinize kaydetme temel iş akışı için yalnızca birkaç temel komut vardır.
git add
git add
komutu, bir sonraki işleme için çalışma dizinindeki içeriği izlem (stage) alanına (veya index
'e) ekler.
git commit
komutu çalıştırıldığında, varsayılan olarak yalnızca bu izlem alanına bakar, dolayısıyla git add
bir sonraki katkı pozunun tam olarak neye benzemesini istediğinizi oluşturmak için kullanılır.
Bu komut Git’te inanılmaz derecede önemli bir komuttur ve bu kitapta onlarca kez bahsedilmiş veya kullanılmıştır. Bulunabilecek benzersiz kullanımlardan bazılarını hızlı bir şekilde ele aldık.
İlk olarak Yeni Dosyaları İzleme bölümünde git add
'i ayrıntılı olarak tanıtıyor ve açıklıyoruz.
Birleştirme Çakışması (merge conflict) bölümünde birleştirme çakışmalarını çözmek için nasıl kullanılacağından bahsettik.
Etkileşimli İzlemleme (Staging) bölümünde değiştirilmiş bir dosyanın yalnızca belirli bölümlerini etkileşimli olarak hazırlamak için kullanmaya devam edeceğiz.
Son olarak Ağaç (tree) Nesneleri bölümünde bunu düşük düzeyde taklit ediyoruz, böylece perde arkasında ne yaptığına dair bir fikir edinmenizi amaçladık.
git status
git status
komutu size çalışma dizininizdeki ve hazırlama alanınızdaki dosyaların farklı durumlarını gösterecektir.
Hangi dosyaların değiştirildiği ve izleme alınmadığını, hangilerinin izlemlendiğini ancak henüz kaydedilmediği.
Normal haliyle, dosyaları bu durumlar arasında nasıl taşıyacağınız konusunda size bazı temel ipuçları da verir.
İlk olarak Dosyalarınızın Durumunu Denetleme bölümünde hem temel, hem de basitleştirilmiş formlarında status
'ı ele alıyoruz.
Kitap boyunca bunu kullansak da, git status
komutuyla yapabileceğiniz hemen hemen her şey burada ele alınmaktadır.
git diff
Herhangi iki ağaç arasındaki farkları görmek istediğinizde git diff
komutu kullanılır.
Bu, çalışma ortamınız ile izlem alanınız arasındaki fark (tek başına git diff
), izlem alanınız ile son katkınız arasındaki (git diff --staged
) veya iki katkı arasındaki fark (git diff master BranchB
) olabilir.
İlk olarak İzleme Alınmış (Staged) ve Alınmamış (Unstaged) Değişiklikleri Görme bölümünde git diff
'in temel kullanımlarına baktık, burada hangi değişikliklerin izlemde olduğunu ve hangilerinin henüz izlemlenmediğini nasıl göreceğimizi anlattık.
Katkı Rehberi bölümündeki --check
seçeneğiyle işlem yapmadan önce olası boşluk sorunlarını aramak için kullanırız.
Katkıları Tanımlamak bölümündeki git diff A...B
sözdizimi ile dallar arasındaki farkları nasıl daha etkili bir şekilde kontrol edebileceğimizi görüyoruz.
İleri Seviye Birleştirme bölümünde -b
ile boşluk farklarını filtrelemek ve çakışan dosyaların farklı aşamalarını --theirs
, --ours
ve --base
ile nasıl karşılaştıracağımızı görürüz.
Son olarak, Alt Modüllere Giriş bölümündeki --submodule
ile alt modül değişikliklerini etkili bir şekilde karşılaştırmak için kullanıyoruz.
git difftool
git difftool
komutu, yerleşik git diff
komutu dışında bir şey kullanmak istemeniz durumunda size iki ağaç arasındaki farkı gösterece,k harici bir aracı başlatır.
İzleme Alınmış (Staged) ve Alınmamış (Unstaged) Değişiklikleri Görme bölümünde bundan çok kısaca bahsettik.
git commit
git commit
komutu, git add
ile hazırlanan tüm dosya içeriğini alır ve veritabanına yeni bir kalıcı poz kaydeder ve ardından geçerli daldaki dal işaretçisini ona doğru hareket ettirir.
İlk olarak Değişiklikleri Katkı Olarak İşlemek bölümünde katkı işlemenin temellerini ele aldık.
Burada ayrıca günlük iş akışlarında git add
adımını atlamak için -a
bayrağının nasıl kullanılacağını ve bir düzenleyiciyi başlatmak yerine komut satırına bir katkı mesajı iletmek için -m
bayrağının nasıl kullanılacağını da gösterdik.
Değişiklikleri Geri Alma bölümünde, en son işlemi yeniden yapmak için --amend
seçeneğinin kullanımını ele aldık.
Dallar bölümünde git commit
'in ne yaptığı ve bunu neden böyle yaptığı hakkında çok daha fazla ayrıntıya girdik.
Katkıları İmzalama bölümünde katkıların kriptografik olarak -S
bayrağıyla nasıl imzalanacağına baktık.
Son olarak katkı Nesnesi bölümünde, git commit
komutunun arka planda ne yaptığına ve gerçekte nasıl uygulandığına bir göz attık.
git reset
git reset
komutu, muhtemelen fiilden de anlayabileceğiniz gibi, öncelikle işleri geri almak için kullanılır.
HEAD
işaretçisi etrafında hareket eder ve isteğe bağlı olarak index
'i veya izlem alanını (stage) değiştirir ve ayrıca --hard
bayrağını kullanırsanız, isteğe bağlı olarak çalışma dizinini de değiştirebilir.
Bu son seçenek, yanlış kullanıldığında bu komutun çalışmanızı kaybetmesine olanak tanır; bu nedenle kullanmadan önce sonuçlarını anladığınızdan emin olun.
Öncelikle İzleme Alınmış Dosyayı izlemden Çıkarmak bölümünde git reset
'in en basit kullanımını etkili bir şekilde ele alıyoruz; burada onu, üzerinde git add
çalıştırdığımız bir dosyayı izlemden kaldırmak için kullandık.
Daha sonra tamamen bu komutu açıklamaya ayrılan Reset Komutunun Gizemleri bölümünde, bunu oldukça ayrıntılı bir şekilde ele aldık.
Birleştirmeyi İptal bölümünde bir birleştirme işlemini iptal etmek için git reset --hard
'ı kullandık; burada aynı zamanda git reset
için bir sarmalayıcı (wrapper) parçası olan git merge --abort
'u da kullandık.
git rm
git rm
komutu, dosyaları Git’in izlem alanından ve çalışma dizininden kaldırmak için kullanılır.
Bir sonraki katkıdan önce bir dosyanın izlemden kaldırılması açısından git add
'in tam zıttıdır.
Dosyaları Silmek bölümünde, dosyaları yinelemeli olarak (alt dizinlerine inerek) kaldırmak ve dosyaları yalnızca izlem alanından kaldırmak, ancak bunları --cached
ile çalışma dizininde bırakmak da dahil olmak üzere, git rm
komutunu biraz ayrıntılı olarak ele aldık.
Kitapta git rm
'nin diğer tek farklı kullanımı Nesneleri Silmek bölümündedir.
Burada git filter-branch
komutu çalıştırırken --ignore-unmatch
bayrağını kullanıp, açıkladık: bu bayrak kaldırmaya çalıştığımız dosya mevcut olmadığında, hata verilmemesini sağlar ve komut dosyası oluşturma amaçları için yararlı olabilir.
git mv
git mv
komutu, bir dosyayı taşımak ve ardından yeni dosyada git add
ve eski dosyada git rm
komutunu çalıştırmak için kullanılan, basit bir kolaylaştırma komutudur.
Bu komuttan yalnızca Dosyaları Taşıma bölümünde kısaca bahsettik.
git clean
git clean
komutu, istenmeyen dosyaları çalışma dizininizden kaldırmak için kullanılır.
Bu, geçici derleme yapıtlarının kaldırılmasını veya çakışma dosyalarının birleştirilmesini de içerebilir.
Çalışma Dizininizi Temizlemek bölümünde git clean
komutunu kullanabileceğiniz birçok seçeneği ve senaryoyu ele aldık.