Giriş: Sürüm Kontrolü Nedir ve Neden Git Kullanmalıyız?
Modern yazılım geliştirme süreçlerinde, projeler üzerinde birden fazla geliştiricinin aynı anda çalışması veya projenin farklı aşamalarını takip etmek yaygın bir ihtiyaçtır. Bu noktada "sürüm kontrol sistemleri" (Version Control Systems - VCS) devreye girer. Sürüm kontrol sistemleri, zaman içinde kod tabanında yapılan değişiklikleri kaydetmenize, geçmiş sürümlere geri dönmenize, farklı kod dallarını birleştirmenize ve takım çalışmasını koordine etmenize olanak tanır. Git, günümüzün en popüler ve güçlü dağıtık sürüm kontrol sistemlerinden biridir. Git, merkezi bir sunucuya bağımlı olmadan her geliştiricinin kendi yerel makinesinde projenin tam bir kopyasına sahip olmasına olanak tanır. Bu, çevrimdışı çalışabilme, daha hızlı işlemler ve merkezi sunucunun çökmesi durumunda bile veri kaybı riskinin azalması gibi önemli avantajlar sunar.
1. Git Kurulumu ve İlk Yapılandırma
Git'i kullanmaya başlamadan önce bilgisayarınıza kurmanız gerekir. Git'i işletim sisteminize uygun şekilde resmi web sitesinden (https://git-scm.com/downloads) indirebilirsiniz. Kurulum tamamlandıktan sonra, Git'in kim olduğunuzu bilmesi için birkaç temel yapılandırma yapmanız önemlidir. Bu bilgiler, yaptığınız her commit'in kim tarafından yapıldığını gösterir:
Bu komutlar, global olarak tüm Git projeleriniz için geçerli olacaktır. Belirli bir proje için farklı bir isim veya e-posta kullanmak isterseniz, `--global` bayrağını kullanmadan proje dizini içinde aynı komutları çalıştırabilirsiniz.
2. Temel Git Kavramları
Git'i etkili bir şekilde kullanabilmek için üç temel alanı anlamak önemlidir:
3. Proje Başlatma ve Klonlama
Yeni bir Git projesi başlatmak veya mevcut bir projeyi klonlamak için farklı komutlar kullanılır:
4. Değişiklikleri Takip Etme ve Kaydetme (Staging ve Committing)
Kodunuzda değişiklikler yaptıktan sonra, bu değişiklikleri Git'e kaydetmeniz gerekir. Bu süreç iki adımdan oluşur: hazırlık (staging) ve kaydetme (committing).
5. Geçmişi Görüntüleme
Projelerinizin commit geçmişini incelemek için `git log` komutunu kullanabilirsiniz. Bu komut, commit ID'si, yazar, tarih ve commit mesajı gibi bilgileri gösterir:
Farklı formatlarda görüntülemek için çeşitli bayraklar kullanılabilir:
6. Dallanma (Branching) ve Birleştirme (Merging)
7. Uzak Depolar (Remotes): Push ve Pull İşlemleri
Git'in dağıtık yapısı sayesinde, yerel deponuzdaki değişiklikleri uzak bir depoyla (örneğin GitHub, GitLab, Bitbucket gibi platformlarda barındırılan) senkronize edebilirsiniz. Bu, takım üyeleriyle işbirliği yapmanın temelidir.
8. Tipik Bir Git İş Akışı Örneği
Bir projede yeni bir özellik geliştirirken izleyebileceğiniz yaygın bir iş akışı:
9. İpuçları ve En İyi Uygulamalar
Sonuç
Git, modern yazılım geliştirmenin ayrılmaz bir parçasıdır. Bu rehber, Git'in temel komutlarını ve kavramlarını anlamanıza yardımcı olmayı amaçlamıştır. Başlangıçta karmaşık gelebilir, ancak pratik yaparak ve sıkça kullanarak zamanla Git'in gücünü ve esnekliğini tam olarak kavrayacaksınız. Unutmayın, Git ile hatalarınızdan korkmayın; her zaman geçmişe dönebilir ve yanlış giden şeyleri düzeltebilirsiniz. İyi pratikler ve düzenli kullanım, sizi daha verimli bir geliştirici yapacaktır. Daha derinlemesine bilgi için Git'in resmi dokümantasyonunu ve çeşitli çevrimiçi kaynakları incelemenizi şiddetle tavsiye ederiz.
Başarılar dileriz!
Modern yazılım geliştirme süreçlerinde, projeler üzerinde birden fazla geliştiricinin aynı anda çalışması veya projenin farklı aşamalarını takip etmek yaygın bir ihtiyaçtır. Bu noktada "sürüm kontrol sistemleri" (Version Control Systems - VCS) devreye girer. Sürüm kontrol sistemleri, zaman içinde kod tabanında yapılan değişiklikleri kaydetmenize, geçmiş sürümlere geri dönmenize, farklı kod dallarını birleştirmenize ve takım çalışmasını koordine etmenize olanak tanır. Git, günümüzün en popüler ve güçlü dağıtık sürüm kontrol sistemlerinden biridir. Git, merkezi bir sunucuya bağımlı olmadan her geliştiricinin kendi yerel makinesinde projenin tam bir kopyasına sahip olmasına olanak tanır. Bu, çevrimdışı çalışabilme, daha hızlı işlemler ve merkezi sunucunun çökmesi durumunda bile veri kaybı riskinin azalması gibi önemli avantajlar sunar.
1. Git Kurulumu ve İlk Yapılandırma
Git'i kullanmaya başlamadan önce bilgisayarınıza kurmanız gerekir. Git'i işletim sisteminize uygun şekilde resmi web sitesinden (https://git-scm.com/downloads) indirebilirsiniz. Kurulum tamamlandıktan sonra, Git'in kim olduğunuzu bilmesi için birkaç temel yapılandırma yapmanız önemlidir. Bu bilgiler, yaptığınız her commit'in kim tarafından yapıldığını gösterir:
Kod:
git config --global user.name "Adınız Soyadınız"
git config --global user.email "eposta@example.com"
Bu komutlar, global olarak tüm Git projeleriniz için geçerli olacaktır. Belirli bir proje için farklı bir isim veya e-posta kullanmak isterseniz, `--global` bayrağını kullanmadan proje dizini içinde aynı komutları çalıştırabilirsiniz.
2. Temel Git Kavramları
Git'i etkili bir şekilde kullanabilmek için üç temel alanı anlamak önemlidir:
- Çalışma Dizini (Working Directory): Projenizin disk üzerindeki gerçek dosyalarının bulunduğu yerdir. Burada dosyaları düzenler, ekler veya silersiniz.
- Hazırlık Alanı (Staging Area / Index): Bir sonraki commit'e dahil etmek istediğiniz değişiklikleri hazırladığınız ara bölgedir. Değişiklikleriniz burada bekler ve istediğiniz dosyaları seçerek commit'e eklemenizi sağlar.
- Yerel Depo (Local Repository): Tüm commit'lerinizin ve projenizin tüm geçmişinin saklandığı .git klasörüdür. Her commit, projenizin belirli bir anlık görüntüsüdür.
3. Proje Başlatma ve Klonlama
Yeni bir Git projesi başlatmak veya mevcut bir projeyi klonlamak için farklı komutlar kullanılır:
- Yeni bir proje başlatmak: Mevcut bir klasörü Git deposu haline getirmek için klasörün içine girip şu komutu çalıştırın:
Kod:git init
- Mevcut bir projeyi klonlamak: Uzak bir sunucuda (örn. GitHub) bulunan bir depoyu yerel makinenize indirmek için klonlama işlemi yapılır:
Kod:git clone [url]https://github.com/kullanici/proje.git[/url]
4. Değişiklikleri Takip Etme ve Kaydetme (Staging ve Committing)
Kodunuzda değişiklikler yaptıktan sonra, bu değişiklikleri Git'e kaydetmeniz gerekir. Bu süreç iki adımdan oluşur: hazırlık (staging) ve kaydetme (committing).
- Değişikliklerin Durumunu Görüntüleme: Hangi dosyaların değiştiğini, hangilerinin takip edildiğini veya edilmediğini görmek için:
Kod:git status
- Değişiklikleri Hazırlık Alanına Ekleme: Değişen dosyaları bir sonraki commit'e dahil etmek üzere hazırlık alanına alırsınız:
Kod:git add dosya_adi.txt git add .
- Değişiklikleri Kaydetme (Commit Etme): Hazırlık alanındaki değişiklikleri yerel depoya kalıcı olarak kaydetme işlemidir. Her commit, projenizin belirli bir anlık görüntüsünü temsil eder ve açıklayıcı bir mesaj içermelidir:
Kod:git commit -m "Yeni özellik eklendi ve hata düzeltildi"
5. Geçmişi Görüntüleme
Projelerinizin commit geçmişini incelemek için `git log` komutunu kullanabilirsiniz. Bu komut, commit ID'si, yazar, tarih ve commit mesajı gibi bilgileri gösterir:
Kod:
git log
Farklı formatlarda görüntülemek için çeşitli bayraklar kullanılabilir:
Kod:
git log --oneline # Her commit'i tek satırda gösterir
git log --graph # Branch ve merge işlemlerini grafiksel olarak gösterir
git log -p # Her commit'teki değişiklikleri (diff) gösterir
6. Dallanma (Branching) ve Birleştirme (Merging)
Dallanma (Branching), Git'in en güçlü özelliklerinden biridir. Bir projenin ana akışından ayrılıp bağımsız bir geliştirme yolunda çalışmanıza olanak tanır. Bu sayede yeni özellikler geliştirirken veya hataları düzeltirken ana kod tabanını etkilemeden güvenli bir ortamda çalışabilirsiniz.
- Mevcut dalları listeleme:
Kod:git branch
- Yeni bir dal oluşturma:
Kod:git branch yeni-ozellik
- Dallar arasında geçiş yapma: Oluşturduğunuz veya mevcut bir dala geçmek için:
Kod:git checkout yeni-ozellik
Kod:git checkout -b yeni-ozellik
- Dalları birleştirme (Merging): Bir dalda yaptığınız değişiklikleri başka bir dala (genellikle `master` veya `main` dalına) entegre etmek için birleştirme işlemi yapılır. Örneğin, `yeni-ozellik` dalındaki değişiklikleri `main` dalına birleştirmek için önce `main` dalına geçip sonra `merge` komutunu çalıştırırsınız:
Kod:git checkout main git merge yeni-ozellik
- Bir dalı silme: Bir dalın işi bittiğinde ve birleştirildiğinde silinebilir:
Kod:git branch -d yeni-ozellik
7. Uzak Depolar (Remotes): Push ve Pull İşlemleri
Git'in dağıtık yapısı sayesinde, yerel deponuzdaki değişiklikleri uzak bir depoyla (örneğin GitHub, GitLab, Bitbucket gibi platformlarda barındırılan) senkronize edebilirsiniz. Bu, takım üyeleriyle işbirliği yapmanın temelidir.
- Uzak depoları görüntüleme:
Kod:git remote -v
- Değişiklikleri Uzak Depoya Gönderme (Push): Yerel commit'lerinizi uzak depoya yüklemek için kullanılır:
Kod:git push origin main
- Değişiklikleri Uzak Depodan Çekme (Pull): Başka bir geliştiricinin uzak depoya gönderdiği değişiklikleri yerel deponuza indirmek için kullanılır:
Kod:git pull origin main
Sadece uzak depodaki değişiklikleri indirmek ama henüz yerel dalınıza birleştirmemek isterseniz `git fetch` kullanabilirsiniz. Daha sonra manuel olarak `git merge origin/main` ile birleştirebilirsiniz.
8. Tipik Bir Git İş Akışı Örneği
Bir projede yeni bir özellik geliştirirken izleyebileceğiniz yaygın bir iş akışı:
- Projeyi klonlayın (ilk sefer için):
Kod:
git clone [url]https://github.com/ornek/proje.git[/url]
- Proje dizinine girin:
Kod:
cd proje
- Ana daldan güncel değişiklikleri çekin:
Kod:
git pull origin main
- Yeni bir özellik dalı oluşturun ve o dala geçin:
Kod:
git checkout -b yeni-ozellik
- Kod değişikliklerinizi yapın.
- Değişiklikleri hazırlık alanına ekleyin:
Kod:
git add .
- Değişiklikleri commit edin:
Kod:
git commit -m "Yeni özellik eklendi: Kullanıcı profili"
- Değişikliklerinizi uzak depoya gönderin:
Kod:
git push origin yeni-ozellik
- (Opsiyonel) Birleştirme isteği (Pull Request / Merge Request) açın.
- Özellik dalınız `main` dala birleştirildikten sonra yerel dalınızı silin:
Kod:
git branch -d yeni-ozellik

9. İpuçları ve En İyi Uygulamalar
- Küçük ve Anlamlı Commit'ler Yapın: Her commit tek bir mantıksal değişikliği yansıtmalı. Bu, geçmişi anlamayı ve hataları geri almayı kolaylaştırır.
- Anlamlı Commit Mesajları Yazın: İlk satır kısa ve öz bir özet olmalı, sonraki satırlarda detayları açıklayabilirsiniz.
- .gitignore Kullanın: Derlenmiş dosyalar, geçici dosyalar veya hassas bilgiler gibi versiyon kontrolüne dahil etmek istemediğiniz dosyaları `.gitignore` dosyasına ekleyin. Örnek:
Kod:# Log dosyaları *.log # Geçici dosyalar *.tmp # Node.js bağımlılıkları node_modules/
- Sık Sık `git pull` Yapın: Özellikle takım ortamında çalışırken, diğerlerinin değişikliklerini düzenli olarak çekerek çakışma olasılığını azaltın.
- Her Zaman `git status` Kullanın: Bir komut çalıştırmadan önce çalışma dizininizin durumunu kontrol etmek iyi bir alışkanlıktır.
- Görsel Git Araçları: Sourcetree, GitKraken, VS Code'un dahili Git entegrasyonu gibi görsel araçlar, Git öğrenme sürecini kolaylaştırabilir.
Sonuç
Git, modern yazılım geliştirmenin ayrılmaz bir parçasıdır. Bu rehber, Git'in temel komutlarını ve kavramlarını anlamanıza yardımcı olmayı amaçlamıştır. Başlangıçta karmaşık gelebilir, ancak pratik yaparak ve sıkça kullanarak zamanla Git'in gücünü ve esnekliğini tam olarak kavrayacaksınız. Unutmayın, Git ile hatalarınızdan korkmayın; her zaman geçmişe dönebilir ve yanlış giden şeyleri düzeltebilirsiniz. İyi pratikler ve düzenli kullanım, sizi daha verimli bir geliştirici yapacaktır. Daha derinlemesine bilgi için Git'in resmi dokümantasyonunu ve çeşitli çevrimiçi kaynakları incelemenizi şiddetle tavsiye ederiz.
Başarılar dileriz!