-
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ı
7.2 Git Araçları - Etkileşimli İzlemleme (Staging)
Etkileşimli İzlemleme (Staging)
Bu bölümde, belirli karmaları ve dosya parçalarını içerecek şekilde katkılarınızı hazırlamanıza yardımcı olabilecek birkaç etkileşimli Git komutunu göreceksiniz. Bu araçlar, birçok dosyayı büyük ölçüde değiştirip, daha sonra bu değişikliklerin kocaman ve karışık tek bir katkı yerine, her biri odaklanmış birkaç farklı katkıya bölünmesini istediğinizde yardımcı olur. Böylece, katkılarınızın mantıksal olarak ayrı değişiklik setleri olduğundan emin olabilirsiniz ve sizinle çalışan geliştiriciler tarafından kolayca incelenebilirler.
git add
komutunu -i
veya --interactive
seçeneğiyle çalıştırırsanız, Git etkileşimli bir kabuk moduna girer ve şuna benzer bir şey görüntüler:
$ git add -i
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now>
Bu komut, muhtemelen alışık olduğunuzdan çok farklı bir şekilde izlem alanınızı görüntüler: temelde, git status
ile aynı bilgileri alırsınız, ancak biraz daha özlü ve bilgilendiricidir.
Sol tarafta izleme aldığınız değişiklikleri, sağ tarafta ise izleme alınmamış değişiklikleri listeleyerek, size gösterir.
Bunun ardından bir "Commands" (Komutlar) bölümü gelir. Bu bölüm size; dosyaları izleme alma ve izlemden kaldırma, dosyanın parçalarını izleme alma, izlenmeyen dosyaları ekleme ve izlemdeki dosyaların ne olduğunu görüntüleme gibi birçok şey yapmanıza olanak tanır.
Dosyaları İzleme Alma ve İzlemden Çıkarma
What now>
sorusunda (güncelleme için) u
veya 2
yazarsanız, hangi dosyaları izlemlemek istediğinizi seçmeniz istenir:
What now> u
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
TODO
ve index.html
dosyalarını izleme almak için numaralarını yazabilirsiniz:
Update>> 1,2
staged unstaged path
* 1: unchanged +0/-1 TODO
* 2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
Her dosyanın yanındaki *
, dosyanın izleme konacağı anlamına gelir.
Update>>
sorusuna bir şey yazmadan Enter tuşuna bastığınızda, Git seçilen her şeyi alır ve sizin için izleme ekler:
Update>>
updated 2 paths
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> s
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Şimdi TODO
ve index.html
dosyalarının izleme alındığını ve simplegit.rb
dosyasının hala izleme alınmadığını görebilirsiniz.
Bu noktada TODO
dosyasını izlemlemek istemiyorsanız, r
veya geri almak için (revert) 3
seçeneğini kullanabilirsiniz:
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> r
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> 1
staged unstaged path
* 1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> [enter]
reverted one path
Tekrar Git durumunuza baktığınızda, TODO
dosyasını izleme alınmadığını görebilirsiniz:
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> s
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
İzleme aldığınız değişikliklerin farkını (diff) görmek için d
veya 6
(diff için) komutunu kullanabilirsiniz.
Bu, izlemlediğiniz dosyaların bir listesini gösterir ve izlemlenenlerin farkını görmek istediğiniz dosyaları seçebilirsiniz.
Bu, komut satırına git diff --cached
yazmak gibidir:
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> d
staged unstaged path
1: +1/-1 nothing index.html
Review diff>> 1
diff --git a/index.html b/index.html
index 4d07108..4335f49 100644
--- a/index.html
+++ b/index.html
@@ -16,7 +16,7 @@ Date Finder
<p id="out">...</p>
-<div id="footer">contact : support@github.com</div>
+<div id="footer">contact : email.support@github.com</div>
<script type="text/javascript">
Bu temel komutlarla, etkileşimli ekleme modunu kullanarak izleme alanınızla biraz daha kolayca başa çıkabilirsiniz.
Yamaları İzlemlemek
Git’in belirli dosya parçalarını izlemlemesi ve geri kalanını izlemlememesi de mümkündür.
Örneğin, simplegit.rb
dosyanızda iki değişiklik yaparsanız ve bunlardan birini izlemlemek isteyip, diğerini istemezseniz, bunu Git’te çok kolayca yapabilirsiniz.
Önceki bölümde açıklanan aynı etkileşimli komuttan, p
veya yama için 5
tuşlarını yazın.
Git, kısmen izlemlemek istediğiniz dosyaları soracaktır; ardından, seçilen dosyaların her bölümü için dosya farklarının parçalarını gösterecek ve bunları tek tek izlemlemek isteyip istemediğinizi soracaktır:
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index dd5ecc4..57399e0 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -22,7 +22,7 @@ class SimpleGit
end
def log(treeish = 'master')
- command("git log -n 25 #{treeish}")
+ command("git log -n 30 #{treeish}")
end
def blame(path)
Stage this hunk [y,n,a,d,/,j,J,g,e,?]?
Bu noktada birçok seçeneğiniz var.
?
yazmak size yapabileceklerinizin bir listesini gösterir:
Bu parçayı izlemlemek ister misiniz? [y,n,a,d,/,j,J,g,e,?]
y - parçayı izleme al
n - parçayı izleme alma
a - bu parçayı ve klasördeki tüm diğer parçaları izleme al
d - du parçayı ve klasördeki hiçbir parçayı izleme alma
g - gitmek için bir parça seç
/ - verilen regex'e (düzenli ifade) uyan parçayı ara
j - bu parçayı karar verilmemiş olarak işaretleyip sıradaki karar verilmemiş parçaya geç
J - bu parçayı karar verilmemiş olarak işaretleyip sıradaki parçaya geç
k - bu parçayı karar verilmemiş olarak işaretleyip bir önceki karar verilmemiş parçaya dön
K - bu parçayı karar verilmemiş olarak işaretleyip bir önceki parçaya dön
s - bu parçayı daha küçük parçalara ayır
e - bu parçayı manuel olarak düzenle
? - yardım ekranını yazdır
Genellikle, her parçayı izleme almak istiyorsanız y
veya n
tuşlarına basarsınız, ancak belirli dosyalardaki tüm parçaları izlemlemek veya bir parça kararını daha sonra ertelemek de yardımcı olabilir.
Dosyanın bir kısmını izlemleyip diğer kısmını izlemlememeniz durumunda, durum çıktınız şuna benzer olacaktır:
What now> 1
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: +1/-1 +4/-0 lib/simplegit.rb
simplegit.rb
dosyasının durumu ilginçtir.
Size birkaç satırın izleme alındığını ve birkaçının izlemlenmediğini gösterir.
Bu dosyayı kısmen izlemlediniz.
Bu noktada, etkileşimli ekleme komutundan çıkış yapabilir ve kısmen izleme alınmış dosyaları katkı olarak işlemek için git commit
komutunu çalıştırabilirsiniz.
Bunun yanında, kısmi dosya izlemlemesi yapmak için etkileşimli ekleme modunda olmanıza gerek yoktur - aynı betikte git add -p
veya git add --patch
komutunu kullanarak bu betiği başlatabilirsiniz.
Ayrıca, dosyaları kısmen sıfırlamak için git reset --patch
komutunu, dosyaların parçalarını kontrol etmek için git checkout --patch
komutunu ve dosyaların parçalarını gizlemek için git stash save --patch
komutunu kullanabilirsiniz.
Bu komutların daha gelişmiş kullanımlarına geçtiğimizde, her biri hakkında daha fazla ayrıntıya gireceğiz.