-
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ı
A1.1 Ek bölüm A: Diğer Ortamlarda Git - Görsel Arayüzler
Kitabın tamamını okursanız Git’i komut satırında nasıl kullanacağınız hakkında çok şey öğrenmiş olursunuz. Yerel dosyalarla çalışabilir, reponuzu ağ üzerinden diğerlerine bağlayabilir ve başkalarıyla etkili bir şekilde çalışabilirsiniz. Ancak hikaye burada bitmiyor; Git genellikle daha büyük bir ekosistemin parçası olarak kullanılır ve terminal her zaman onunla çalışmanın en iyi yolu değildir. Şimdi Git’in yararlı olabileceği diğer ortam türlerine ve diğer uygulamaların (sizinki dahil) Git ile birlikte nasıl çalıştığına göz atacağız.
Görsel Arayüzler
Git’in doğal ortamı terminaldir. Yeni özellikler önce orada ortaya çıkar ve Git’in bize bahşettiği tam güç yalnızca komut satırında tamamen elinizin altındadır. Ancak düz metin her zaman en iyi seçenek değildir; bazen ihtiyacınız olan şey görsel bir temsildir ve bazı kullanıcılar işaretleyip tıklayabilecekleri bir arayüzde çok daha rahat hissederler.
Farklı arayüzlerin farklı iş akışları için özel olarak tasarlandığını unutmamak gerekir. Bazı istemciler yalnızca belirli bir çalışma şeklini desteklemek için, yazarın etkili bulduğu belirli bir Git işlevselliğinin özenle seçilmiş bir alt kümesini sunar. Bu açıdan bakıldığında, bu araçların hiçbiri diğerlerinden "daha iyi" olarak adlandırılamaz, sadece hedeflenen amaca daha uygun olabilirler. Ayrıca, bu görsel istemcilerin yapabileceği hiçbir şeyin komut satırı istemcisi tarafından yapılamayacağını unutmayın; komut satırı hala repolarınızla çalışırken en fazla güç ve kontrolü sağlayacağınız yerdir.
gitk
ve git-gui
Git’i yüklediğinizde, gitk
ve git-gui
gibi görsel araçları da birlikte gelir.
gitk
görsel bir tarih görüntüleyicisidir.
Onu git log
ve git grep
üzerine güçlü bir GUI kabuğu gibi düşünün.
Bu, geçmişte olan bir şeyi bulmaya çalıştığınızda veya projenizin geçmişini görselleştirmeye çalıştığınızda kullanacağınız araçtır.
Gitk’yi en kolay şekilde komut satırından çağırabilirsiniz.
Sadece bir Git reposuna cd
yapın ve şunu yazın:
$ gitk [git log options]
Gitk, birçok komut satırı seçeneğini kabul eder, bunların çoğu temel git log
işlemine iletilir.
Muhtemelen en faydalı olanlardan biri, gitk’ye herhangi bir referanstan ulaşılabilen işlemleri göstermesini söyleyen --all
bayrağıdır.
Gitk’nin arayüzü şöyle görünür:
gitk
geçmiş görüntüleyici.Üst kısımda, git log --graph
çıktısına benzeyen bir şey bulunur; her nokta bir katkıyı temsil eder, çizgiler üst nesne ilişkilerini temsil eder ve referanslar renkli kutular olarak gösterilir.
Sarı nokta HEAD’i, kırmızı nokta ise henüz bir katkıya dönüşmemiş değişiklikleri temsil eder.
Alt kısımda, seçili katkı görünümü bulunur; solda yorumlar ve yama, sağda ise özet görünümü.
Arada, geçmişi aramak için kullanılan kontrol ögelerinin bir koleksiyonu bulunur.
git-gui
ise temel olarak bir katkı oluşturma aracıdır.
Bu da komut satırından çağrılması en kolay olanlardandır:
$ git gui
Ve şuna benzer:
git-gui
katkı aracı.Solda, dizin bulunur; izleme alınmamış (unstaged) değişiklikler üstte, izleme alınmış (staged) değişiklikler altta yer alır. Dosyaları iki durum arasında taşımak için simgelerine tıklamanız yeterlidir veya bir dosyayı görüntülemek için adına tıklayabilirsiniz.
Sağ üstte, şu anda seçili dosyanın değişikliklerini gösteren diff görünümü bulunur. Burayaa sağ tıklayarak tekil parçaları (veya tekil satırları) izleme alabilirsiniz.
Sağ altta, mesaj ve eylem alanı bulunur.
Mesajınızı metin kutusuna yazın ve git commit
işlemine benzer bir şeyler yapmak için ``Commit`` düğmesine tıklayın.
Ayrıca ``Amend`` radyo düğmesini seçerek son katkıyı değiştirebilirsiniz; bu işlem izlem alanını son katkı içeriğiyle günceller.
Sonra, sadece bazı değişiklikleri izleme alabilir veya çıkarabilir, katkı mesajını değiştirebilir ve ``Commit`` düğmesine yeniden tıklayarak eski katkıyı yeni bir katkıyla değiştirebilirsiniz.
gitk
ve git-gui
görev odaklı araç örnekleridir.
Her biri belirli bir amaç için (sırasıyla; geçmişi görüntüleme ve katkı oluşturma) özelleştirilmiştir ve bu görev için gerekli olmayan özellikleri yok sayarlar.
macOS ve Windows için GitHub
GitHub’ın oluşturduğu iş akışı odaklı 2 Git istemcisi bulunmaktadır: biri Windows için, diğeri macOS için. Bu istemciler Git’in tüm işlevselliğini ortaya çıkarmak yerine, iş akışına yönelik üretilmiş araçların iyi bir örneğidir; birlikte iyi çalışan ve sık kullanılan bir dizi özelliğe odaklanırlar. Aşağı yukarı şöyle görünürler:
Her ikisi de görünüş ve işlev bakımından çok benzer olacak şekilde tasarlanmıştır, bu yüzden bu bölümde onları tek bir şeymiş gibi ele alacağız. Kendi kılavuzlerı olduğu için, bu araçlarla ilgili detaylı bir inceleme yapmayacağız; ancak çoğu zaman zamanınızı geçireceğiniz için, "changes" (değişiklikler) görünümünde kısa bir tur gereklidir.
-
Solda istemcinin izlediği repoların listesi bulunur: Buranın üstündeki ``+`` simgesine tıklayarak (yerel olarak veya kopyalama yoluyla) bir repo ekleyebilirsiniz.
-
Ortada bir katkı giriş alanı bulunur: Bu alan bir katkı mesajı girmenizi ve hangi dosyaların dahil edileceğini seçmenizi sağlar. (Windows’ta katkı geçmişi doğrudan bu alanın altında gösterilir, macOS’ta ise ayrı bir sekmede bulunur.)
-
Sağda bir fark görünümü bulunur: Çalışma dizininizde neyin değiştiğini veya seçilen katkıya hangi değişikliklerin dahil edildiğini gösterir.
-
Son dikkat edilecek şey, en üst sağda bulunan ``Senkronize Et`` düğmesidir: Ağ üzerindeki etkileşiminizin temel yolud budur.
Not
|
Bu araçları kullanmak için bir GitHub hesabına ihtiyacınız yoktur. GitHub’ın hizmetini ve önerilen iş akışını vurgulamak için tasarlanmış olsalar da, isteğe bağlı olarak herhangi bir repo ile çalışacak ve herhangi bir Git sunucusunda ağ işlemleri gerçekleştirecektir. |
Kurulum
Windows için GitHub https://windows.github.com adresinden, macOS için GitHub ise https://mac.github.com adresinden indirilebilir. Uygulamalar ilk çalıştırıldığında, size adım adım ilk kez Git kurulumunu (adınızı ve e-posta adresinizi yapılandırma gibi) gösterir ve (kimlik bilgisi önbelleği ve CRLF davranışı gibi) birçok yaygın yapılandırma seçeneği için akıllı varsayılanlar sağlar.
Her ikisi de "daima güncel"dir: uygulamalar açıkken güncellemeler arka planda indirilir ve yüklenir. Yardımsever şekilde Git’in paketlenmiş bir sürümünü içerdiğinden, muhtemelen manuel olarak güncelleme konusunda endişelenmenize gerek olmayacaktır. Windows’ta istemci PowerShell’i Posh-git ile başlatmak için bir kısayol içerir, buna bölümün ilerleyen kısımlarında daha fazla değineceğiz.
Sonraki adım, araca çalışması için bazı repolar vermektir. İstemci size GitHub’da erişiminiz olan repoların bir listesini gösterir ve bunları tek adımda kopyalayabilir. Zaten yerel bir repoya sahipseniz, sadece dizini Finder veya Windows Explorer’dan GitHub istemci penceresine sürükleyip bırakmanız yeterlidir. Böylece bu repo sol taraftaki repolar listesine dahil edilecektir.
Önerilen İş Akışı
GitHub istemcisi kurulduktan ve yapılandırıldıktan sonra, birçok yaygın Git görevini gerçekleştirmek için GitHub istemcisini kullanabilirsiniz. Bu aracın amaçlanan iş akışı bazen "GitHub Akışı" olarak adlandırılır. Bu konuyu GitHub Akışı bölümünde daha detaylı bir şekilde ele alıyoruz, ancak genel olarak (a) bir dalda katkıda bulunacaksınız ve (b) oldukça düzenli bir şekilde uzak bir repo ile senkronize olacaksınız.
Dal yönetimi, iki aracın farklılaştığı alanlardan biridir. macOS’ta, pencerenin üstünde yeni bir dal oluşturmak için bir düğme bulunur:
Windows’ta bu, yeni dalın adını dal değiştirme aracında yazarak yapılır:
Yeni dalınız oluşturulduktan sonra, yeni katkılar işlemek oldukça basittir. Çalışma dizininizde bazı değişiklikler yapın ve GitHub istemci penceresine geçin: hangi dosyaların değiştiğini size gösterecektir. Bir katkı mesajı girin, dahil etmek istediğiniz dosyaları seçin ve "Commit" düğmesine (ctrl-enter veya ⌘-enter) tıklayın.
Ağ üzerinden diğer repolarla etkileşimde bulunmanın temel yolu "Senkronizasyon" (Sync) özelliğidir. Git dahili olarak itme, çekme, birleştirme ve yeniden temelleme için ayrı işlemlere sahiptir; ancak GitHub istemcileri bunların hepsini çok adımlı tek bir özellik halinde birleştirir. "Sync" düğmesine tıkladığınızda ne olduğunu aşağıda görebilirsiniz:
-
git pull --rebase
. Bu işlem, bir birleşme çakışması nedeniyle başarısız olursa,git pull --no-rebase
komutuna geri döner. -
git push
.
Bu, bu tarzda çalışırken en yaygın kullanılan ağ komutları dizisidir, dolayısıyla bunları tek bir komuta sıkıştırmak çok zaman kazandırır.
Özet
Bu araçlar, tasarlandıkları iş akışı için çok uygundur. Geliştiriciler ve geliştirici olmayanlar bir projede dakikalar içinde işbirliği yapabilirler ve bu tür bir iş akışı için birçok en iyi uygulama örneği bu aracın içine gömülüdür. Ancak, iş akışınız farklıysa veya ağ işlemlerinin nasıl ve ne zaman yapılacağı konusunda daha fazla kontrol istiyorsanız, başka bir istemciyi veya doğrudan komut satırını kullanmanızı öneririz.
Diğer Arayüzler
Bir dizi başka görsel Git istemcisi vardır; bunlar, özelleştirilmiş ve tek amaca yönelik araçlardan başlayıp, Git’in yapabileceği her şeyi ortaya çıkarmaya çalışan uygulamalara kadar, geniş bir yelpazede çalışmaktadır. Resmi Git web sitesinde en popüler istemcilerin seçilmiş bir listesi bulunmaktadır: https://git-scm.com/downloads/guis. Daha kapsamlı bir liste ise Git wiki sitesinde mevcuttur: https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.