Git, dosyalardaki değişiklikleri kaydeden ve geçmişe dönmeyi, paralel çalışmayı ve ekip içi iş birliğini mümkün kılan dağıtık bir sürüm kontrol sistemidir. GitHub ise Git depolarını barındıran, kod incelemesi ve otomasyon gibi özellikler sunan bir platformdur. Yazılımla uğraşan herkes için Git bilmek artık temel bir beceridir.
Temel kavramlar
- Repository (depo): Projenin tüm dosyaları ve değişiklik geçmişi.
- Commit: Belirli bir andaki değişikliklerin açıklamayla birlikte kaydı.
- Branch (dal): Ana koddan ayrılıp bağımsız çalışılan kopya.
- Merge: Bir daldaki değişiklikleri başka bir dala birleştirmek.
- Remote: Deponun uzak sunucudaki (örneğin GitHub) kopyası.
- Pull request: Bir daldaki değişikliklerin incelenip ana dala alınması için açılan talep.
İlk kurulum
git config --global user.name "Adınız Soyadınız"
git config --global user.email "eposta@ornek.com"
Günlük komutlar
git init # Yeni depo oluştur
git clone <adres> # Uzak depoyu indir
git status # Değişiklikleri gör
git add . # Değişiklikleri hazırlık alanına al
git commit -m "Stok ekranı eklendi" # Kaydet
git push # Uzak depoya gönder
git pull # Uzak depodaki değişiklikleri al
git log --oneline # Geçmişi kısaca göster
Dal ile çalışmak
Ana dalda (main) doğrudan çalışmak yerine her iş için ayrı bir dal açmak iyi bir alışkanlıktır:
git switch -c ozellik/barkod-okuma
# ... değişiklikler ...
git add .
git commit -m "Barkod okuyucu desteği eklendi"
git push -u origin ozellik/barkod-okuma
Ardından GitHub'da bir pull request açılır, kod incelenir ve onaylandıktan sonra ana dala birleştirilir. Bu akış tek başınıza çalışırken bile değişiklikleri gözden geçirmenizi kolaylaştırır.
İyi commit mesajı
- Ne yapıldığını kısa ve açık yazın: "Fatura listesine tarih filtresi eklendi"
- Her commit tek bir mantıksal değişikliği içersin.
- "düzeltme", "güncelleme" gibi belirsiz mesajlardan kaçının.
.gitignore
Depoya girmemesi gereken dosyaları belirtir: derleme çıktıları, bağımlılık klasörleri, IDE ayarları ve yerel yapılandırmalar. .NET projeleri için bin/ ve obj/ klasörleri tipik örneklerdir. Hazır .gitignore şablonları iyi bir başlangıç noktasıdır.
Gizli bilgileri koruyun
Veritabanı bağlantı dizeleri, API anahtarları ve parolalar asla depoya eklenmemelidir. Açık (public) depolara yüklenen anahtarlar otomatik botlar tarafından çok kısa sürede taranabilir.
- Geliştirmede kullanıcıya özel gizli ayarlar (örneğin .NET User Secrets) veya ortam değişkenleri kullanın.
- Yanlışlıkla bir anahtar yüklediyseniz silmek yetmez; anahtarı hemen iptal edip yenileyin, çünkü geçmişte kalmaya devam eder.
- GitHub'ın gizli bilgi tarama özelliklerini açık tutun.
Yapay zekâ destekli geliştirmede bu konu daha da önem kazanıyor; bkz. AI ile kod yazarken güvenlik.
Hata yaptığınızda
git restore dosya.cs # Kaydedilmemiş değişikliği geri al
git restore --staged dosya.cs # Hazırlık alanından çıkar
git revert <commit> # Bir commit'i geri alan yeni commit oluştur
Paylaşılmış geçmişi yeniden yazan komutları (reset --hard, push --force) ekip çalışmasında dikkatli kullanın.
GitHub'ı portfolyo olarak kullanmak
Yeni başlayan geliştiriciler için GitHub profili, yeteneklerin somut kanıtıdır. Düzenli README dosyaları, anlamlı commit geçmişi ve çalışan örnek projeler işe alım süreçlerinde fark yaratır. Kariyer planı için Junior .NET developer yol haritası yazımıza göz atabilirsiniz.
Sık sorulan sorular
Git ile GitHub aynı şey mi?
Hayır. Git, bilgisayarınızda çalışan sürüm kontrol aracıdır. GitHub, Git depolarını barındıran ve iş birliği araçları sunan bir hizmettir.
Tek başıma çalışıyorsam Git gerekli mi?
Kesinlikle. Geçmişe dönebilmek, denemeleri ayrı dallarda yapmak ve kodu yedeklemek tek kişilik projelerde de çok değerlidir.
Sonuç
Git; kodunuzu güvenle değiştirmenizi, geçmişe dönmenizi ve başkalarıyla düzenli çalışmanızı sağlar. Temel komutlar, dal mantığı ve gizli bilgileri koruma alışkanlığı ile sağlam bir başlangıç yapabilirsiniz. Yazılım projelerinizde destek için iletişime geçebilirsiniz.