Git Bash, GitHub ve Sürüm Kontrolüne Başlangıç Rehberi
Modern yazılım geliştirme dünyasında, projeleri yönetmek, ekip üyeleriyle iş birliği yapmak ve yapılan değişiklikleri takip etmek hayati öneme sahiptir. İşte bu noktada sürüm kontrol sistemleri devreye girer. Bu rehber, özellikle yeni başlayanlar için, sürüm kontrolünün temellerini, en popüler dağıtık sürüm kontrol sistemi olan Git‘i, Git komutlarını çalıştırmak için kullanılan Git Bash ortamını ve projelerinizi bulutta barındırıp iş birliği yapmanızı sağlayan platform GitHub‘ı adım adım tanıtacaktır. Bu araçları öğrenmek, yazılım geliştirme yolculuğunuzda size sağlam bir temel sunacaktır.
Sürüm Kontrol Sistemi (VCS) ve Önemi
Sürüm Kontrol Sistemi (Version Control System – VCS), zaman içinde dosya ve klasörlerde yapılan değişiklikleri yönetmeye yarayan bir sistemdir. Özellikle yazılım geliştirme projelerinde, kod tabanının farklı versiyonlarını takip etmek, hataları geri almak ve birden fazla geliştiricinin aynı proje üzerinde eş zamanlı çalışmasını sağlamak için vazgeçilmezdir.
VCS Nedir?
VCS, bir projenin geçmişini kaydeden, her değişikliği bir “sürüm” olarak saklayan ve bu sürümler arasında kolayca geçiş yapmayı sağlayan bir araçtır. Bu sayede, yanlış bir değişiklik yapıldığında projenin önceki, çalışan bir haline dönmek mümkün olur. Ayrıca, farklı özellikler üzerinde çalışırken “dallar” (branches) oluşturarak ana kod tabanını etkilemeden denemeler yapma imkanı sunar.
Neden VCS Kullanmalıyız?
- Değişiklik Takibi: Kimin, ne zaman, hangi değişikliği yaptığını kolayca görebilirsiniz.
- Geri Alma Yeteneği: Hatalı veya istenmeyen değişiklikleri kolayca geri alabilir, projenin önceki bir durumuna dönebilirsiniz.
- İş Birliği: Birden fazla geliştiricinin aynı proje üzerinde çakışma olmadan eş zamanlı çalışmasını sağlar.
- Yedekleme: Projenizin tüm geçmişini güvenli bir şekilde saklar, veri kaybını önler.
- Dallanma ve Birleştirme (Branching & Merging): Yeni özellikler geliştirmek veya hataları düzeltmek için ana kod tabanından bağımsız çalışma ortamları oluşturmanıza olanak tanır.
Merkezi ve Dağıtık VCS Farkı
VCS’ler temel olarak iki kategoriye ayrılır:
- Merkezi Sürüm Kontrol Sistemleri (CVCS): Tüm proje geçmişi tek bir merkezi sunucuda saklanır. Geliştiriciler bu sunucuya bağlanarak değişiklikleri indirir ve yükler. Örnek: SVN, CVS.
- Dağıtık Sürüm Kontrol Sistemleri (DVCS): Her geliştirici, projenin tüm geçmişinin tam bir kopyasına (repository) sahiptir. Bu sayede, internet bağlantısı olmasa bile değişiklikler yapılabilir ve daha sonra merkezi bir sunucuyla (veya başka bir geliştiricinin kopyasıyla) senkronize edilebilir. Örnek: Git, Mercurial. Git, DVCS’nin en popüler örneğidir ve bu makalede odak noktamız olacaktır.
Git: Dağıtık Sürüm Kontrolünün Temelleri
Git, Linus Torvalds tarafından Linux çekirdeği geliştirilirken ortaya çıkarılan, hızlı, verimli ve dağıtık bir sürüm kontrol sistemidir. Projelerinizi yerel makinenizde yönetmenizi ve değişiklikleri takip etmenizi sağlar.
Git’in Tarihçesi ve Felsefesi
Git, 2005 yılında Linux çekirdeği geliştiricilerinin kullandığı ticari BitKeeper yazılımının lisans sorunları nedeniyle, Linus Torvalds tarafından sadece birkaç hafta içinde geliştirildi. Temel felsefesi, hız, veri bütünlüğü ve dağıtık iş akışlarına destek olmaktır. Git, her bir geliştiricinin projenin tam bir kopyasına sahip olmasıyla merkezi sistemlere göre daha esnek ve dayanıklı bir yapı sunar.
Git’in Temel Kavramları: Repository, Commit, Branch
- Repository (Depo): Bir projenin tüm dosyalarını, klasörlerini ve bunların tüm geçmişini içeren bir Git projesidir. Yerel (local) ve uzak (remote) olmak üzere iki türü vardır.
- Commit (Taahhüt): Bir projedeki belirli bir andaki değişikliklerin kaydedilmiş halidir. Her commit, bir anlık görüntü (snapshot) gibidir ve benzersiz bir kimliğe (hash) sahiptir. Commit mesajları, yapılan değişiklikleri açıklamak için önemlidir.
- Branch (Dal): Ana geliştirme hattından (genellikle
mainveyamaster) ayrılan bağımsız bir geliştirme hattıdır. Yeni özellikler veya hata düzeltmeleri genellikle ayrı dallarda yapılır ve daha sonra ana dala birleştirilir. - Merge (Birleştirme): İki veya daha fazla dalın değişikliklerini tek bir dalda birleştirme işlemidir.
- Head: Bulunduğunuz dalın en son commit’ini işaret eden bir referanstır.
Git’in Avantajları
Git’in popüler olmasının birçok nedeni vardır:
- Hız: Yerel işlemler çok hızlıdır, çünkü tüm proje geçmişi yerel makinede bulunur.
- Veri Bütünlüğü: Kriptografik hash fonksiyonları kullanarak her değişikliğin bütünlüğünü garanti eder.
- Esneklik: Çeşitli iş akışlarına (merkezi, dağıtık, vb.) uyum sağlayabilir.
- Dallanma ve Birleştirme Kolaylığı: Dallanma ve birleştirme işlemleri diğer VCS’lere göre çok daha kolay ve hızlıdır.
- Çevrimdışı Çalışma: İnternet bağlantısı olmadan bile commit yapabilir, geçmişi inceleyebilirsiniz.
Git Bash: Komut Satırında Git Deneyimi
Git Bash, Windows kullanıcıları için Git komutlarını çalıştırmak üzere tasarlanmış bir komut satırı arayüzüdür (CLI). Linux benzeri bir terminal deneyimi sunar ve Git’i tam potansiyeliyle kullanmanızı sağlar.
Git Bash Kurulumu
- Git’in resmi web sitesine gidin: git-scm.com/downloads
- İşletim sisteminize uygun sürümü (Windows, macOS, Linux) indirin.
- Windows için indirilen
.exedosyasını çalıştırın. Kurulum adımlarında çoğu ayarı varsayılan olarak bırakabilirsiniz. “Adjusting your PATH environment” adımında “Git from the command line and also from 3rd-party software” seçeneğini seçtiğinizden emin olun. - Kurulum tamamlandıktan sonra, sağ tıklayarak “Git Bash Here” seçeneğini görebilir veya başlat menüsünden “Git Bash” uygulamasını açabilirsiniz.
Temel Git Bash Komutları
Git Bash terminalinde kullanacağınız bazı temel Git komutları:
# Git versiyonunu kontrol etme
git --version
# Yeni bir Git deposu başlatma
git init
# Dosyaları staging alanına ekleme
git add
git add . # Tüm değişiklikleri ekle
# Değişiklikleri kaydetme (commit)
git commit -m "İlk commit mesajım"
# Depo durumunu kontrol etme
git status
# Commit geçmişini görüntüleme
git log
# Dalları listeleme
git branch
# Yeni bir dal oluşturma
git branch
# Dallara geçiş yapma
git checkout
# Uzak depoyu ekleme
git remote add origin