-
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ı
2.1 Git Temelleri - Bir Git Reposu Oluşturma/Kopyalama
Git’e başlamak için yalnızca bir bölüm okuyabilecek vaktiniz varsa, işte bu aradığınız bölümdür. Bu bölüm, Git’te zamanınızı harcayacağınız şeylerin büyük çoğunluğunu yapmak için ihtiyacınız olan tüm temel komutları kapsar. Bölümün sonunda, bir Git reposunu yapılandırıp başlatabilmeniz, dosyaları izlemeyi başlatıp durdurabilmeniz ve değişikliklerinizi izleme alıp (stage) uzak repoya kaydedebilecek seviyeye geleceksiniz. Ayrıca Git’i belirli dosyaları ve dosya kalıplarını yok sayacak şekilde nasıl ayarlayacağınızı, hataları hızlı ve kolay bir şekilde nasıl geri alacağınızı, projenizin geçmişine nasıl göz atacağınızı, katkılar (commit) arasındaki değişiklikleri nasıl görüntüleyeceğinizi ve uzak repolarla nasıl kod alışverişi yapacağınızı göstereceğiz.
Git’e başlamak için yalnızca bir bölüm okuyabilecek vaktiniz varsa, işte bu aradığınız bölümdür. Bu bölüm, Git’te zamanınızı harcayacağınız şeylerin büyük çoğunluğunu yapmak için ihtiyacınız olan tüm temel komutları kapsar. Bölümün sonunda, bir Git reposunu yapılandırıp başlatabilmeniz, dosyaları izlemeyi başlatıp durdurabilmeniz ve değişikliklerinizi izleme alıp (stage) uzak repoya kaydedebilecek seviyeye geleceksiniz. Ayrıca Git’i belirli dosyaları ve dosya kalıplarını yok sayacak şekilde nasıl ayarlayacağınızı, hataları hızlı ve kolay bir şekilde nasıl geri alacağınızı, projenizin geçmişine nasıl göz atacağınızı, katkılar (commit) arasındaki değişiklikleri nasıl görüntüleyeceğinizi ve uzak repolarla nasıl kod alışverişi yapacağınızı göstereceğiz.
Bir Git Reposu Oluşturma/Kopyalama
Tipik olarak bir Git reposu oluşturmanın 2 yolu vardır:
-
Şu anda sürüm denetimi (version control) altında olmayan bir yerel dizini (dosya yolu) alabilir ve onu bir Git reposuna dönüştürebilirsiniz. Veya
-
Başka bir yerden, var olan bir Git reposunu kopyalayabilirsiniz.
Her iki durumda da, yerel makinenizde çalışmaya hazır bir Git reposuna sahip olursunuz.
Varolan Bir Dizinde Repo Başlatma
Eğer şu anda sürüm denetimi altında olmayan bir proje diziniz varsa ve onu Git ile takip etmeye etmeye başlamak istiyorsanız, önce o projenin dizinine gitmeniz gerekmektedir. Eğer bunu daha önce yapmadıysanız, hangi işletim sisteminde çalıştığınıza bağlı olarak proje dizininiz farklı görünebilir.
Linux için:
$ cd /home/user/my_project
macOS için:
$ cd /Users/user/my_project
Windows için:
$ cd /c/user/my_project
Proje dizinine girdikten sonra şunu yazın:
$ git init
Bu, tüm gerekli repo dosyalarını içeren .git
adında yeni bir alt dizin oluşturur (Yani bir Git repo temeli).
Bu aşamada, projenizde henüz takip edilen bir şey yoktur.
(Yeni oluşturduğunuz .git
dizininde hangi dosyaların bulunduğuna dair daha fazla bilgi edinmek için Dahili Git Ögeleri bölümüne bakabilirsiniz.)
Eğer halihazırda mevcut olan dosyaları sürüm denetimine almak istiyorsanız, boş bir dizin yerine, bu hazır dosyaları takip etmeye başlamalı ve bir initial commit (ilk katkı) yapmalısınız.
Bunu, takip etmek istediğiniz dosyaları belirten birkaç git add
komutu ve ardından bir git commit
komutu ile başarabilirsiniz:
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
Bu komutların ne yaptığını birazdan inceleyeceğiz. Bu aşamada, takip edilen dosyaları içeren bir Git reponuz ve başlangıç 'initial commit’iniz vardır.
Mevcut bir Git Reposunu Kopyalama (Klonlama)
Mevcut bir Git deposunun (örneğin katkıda bulunmak istediğiniz bir projenin) bir kopyasını almak istiyorsanız git clone
komutunu kullanmalısınız.
Eğer Subversion veya benzeri diğer VCS sistemlerine aşina iseniz, "checkout" yerine "clone" komutu kullanıldığını fark edeceksiniz.
Bu önemli bir ayrımdır! Zira Git, yalnızca çalışan bir kopya almak yerine, sunucunun sahip olduğu neredeyse tüm verilerin tam bir kopyasını alır.
git clone
komutunu çalıştırdığınızda, projenin geçmişindeki her dosyanın her sürümü varsayılan olarak indirilir.
Aslında, sunucu diskiniz bozulursa, sunucuyu kopyalandığı zamanki durumuna geri döndürmek için herhangi bir istemcideki kopyaların neredeyse tümünü kullanabilirsiniz (bazı sunucu tarafı kancalarını vb. kaybedebilirsiniz, ancak sürümlendirilmiş tüm verilere sahip olacaksınız.
Daha fazla ayrıntı için: Bir Sunucuda Git Kurma).
Bir repoyu git clone <url>
komutu ile kopyalayabilirsiniz.
Örneğin, "libgit2" adlı Git’e bağlanabilir kitaplığı kopyalamak istiyorsanız bunu şu şekilde yapabilirsiniz:
$ git clone https://github.com/libgit2/libgit2
Bu, içinde bir .git dizini olan libgit2 adında bir dizin oluşturur, bu repoya ait tüm verileri çeker ve en son sürümün çalışan bir kopyasını alır.
Yeni oluşturulan libgit2
dizinine giderseniz, orada üzerinde çalışılmaya veya kullanılmaya hazır proje dosyalarını görebilirsiniz.
Repoyu libgit2 dışında bir isimle adlandırılan bir dizine kopyalamak istiyorsanız, yeni dizin adını ek bir argüman olarak belirtebilirsiniz:
$ git clone https://github.com/libgit2/libgit2 mylibgit
Bu komut öncekiyle aynı şeyi yapar, ancak hedef dizine mylibgit
adını verir.
Git’te kullanabileceğiniz bir dizi farklı aktarım protokolü vardır.
Önceki örnekte https://
protokolü kullanılmıştır ancak git://
veya SSH aktarım protokolünü kullanan user@server:path/to/repo.git
ifadelerini de görebilirsiniz.
Bir Sunucuda Git Kurma bölümünde sunucunun Git reponuza erişmek için ayarlayabileceği mevcut tüm seçenekleri ve her birinin artılarını ve eksilerini göreceksiniz.