Git Nedir? Temel Git Komutları ve Günlük Kullanım Rehberi
İçindekiler
- Git Neden Kullanılır?
- Git ile GitHub Aynı Şey mi?
- Git Nasıl Kurulur?
- Git Temel Kavramları Nelerdir?
- Yeni Bir Proje Git ile Nasıl Başlatılır?
- İyi Bir Commit Mesajı Nasıl Yazılır?
- .gitignore Dosyası Nedir?
- Branch Nedir ve Nasıl Kullanılır?
- Birleştirme Çakışması Nasıl Çözülür?
- Uzak Depo ile Nasıl Çalışılır?
- Hatalı İşlemler Nasıl Geri Alınır?
- Sahadan Gözlem: Canlı Sunucuda Git Disiplini
- En Çok Kullanılan Git Komutları Özeti
Git, bir projedeki dosyaların tüm değişiklik geçmişini saklayan, dağıtık yapıda çalışan ücretsiz ve açık kaynaklı bir sürüm kontrol sistemidir. Git sayesinde hangi dosyada ne zaman, kim tarafından, neyin değiştirildiğini görebilir, bozulan bir kodu önceki çalışan sürüme döndürebilir ve aynı proje üzerinde birden fazla kişiyle birbirinizin işini ezmeden çalışabilirsiniz.
Bu yazıda Git kurulumunu, temel kavramları, günlük hayatta en çok kullanılan komutları, dal (branch) yönetimini, uzak depolarla çalışmayı ve hatalı işlemleri geri almayı adım adım ele alacağız.
Git Neden Kullanılır?
Git kullanmayan pek çok geliştirici proje klasörünü proje_yedek, proje_son, proje_son_gercek gibi adlarla kopyalayarak sürüm tutar. Bu yöntem birkaç hafta sonra hangi kopyanın doğru olduğunun bilinmediği bir karmaşaya dönüşür.
- Tam geçmiş: Her kayıt noktası tarih, yazar ve açıklama ile saklanır.
- Güvenli deneme: Yeni bir özelliği ayrı dalda geliştirip çalışan sürümü bozmadan deneyebilirsiniz.
- Ekip çalışması: Değişiklikler birleştirilir, çakışmalar açıkça gösterilir.
- Yedek ve dağıtım: Uzak depo sayesinde proje başka sunucuda da bulunur ve sunucuya kolayca aktarılabilir.
Git ile GitHub Aynı Şey mi?
Hayır. Git, bilgisayarınızda çalışan sürüm kontrol yazılımıdır. GitHub, GitLab ve Bitbucket ise Git depolarını internet üzerinde barındıran hizmetlerdir. Git internete hiç bağlanmadan yalnızca kendi bilgisayarınızda da kullanılabilir.
Git Nasıl Kurulur?
Windows üzerinde Git kurulumu için resmi sitedeki kurulum dosyası kullanılabilir veya komut satırından winget ile kurulum yapılabilir:
winget install --id Git.Git -e
Linux dağıtımlarında paket yöneticisi kullanılır:
sudo apt install git
Kurulumdan sonra ilk iş, kayıtlarda görünecek adınızı ve e-posta adresinizi tanımlamaktır:
git config --global user.name "Ad Soyad"
git config --global user.email "eposta@ornek.com"
git config --global init.defaultBranch main
git --version
Git Temel Kavramları Nelerdir?
Git kullanırken dosyalar üç farklı alanda bulunur. Bu ayrımı anlamak, komutların mantığını kavramanın anahtarıdır.
| Alan | Açıklama | İlgili Komut |
|---|---|---|
| Çalışma dizini | Dosyaları düzenlediğiniz proje klasörü | Dosya düzenleme |
| Hazırlık alanı (staging) | Bir sonraki kayda girecek değişikliklerin listesi | git add |
| Depo (repository) | Kalıcı olarak kaydedilmiş sürümlerin geçmişi | git commit |
Commit, projenin belirli bir andaki fotoğrafıdır. Branch ise commit geçmişi üzerinde bağımsız ilerleyen bir çalışma hattıdır.
Yeni Bir Proje Git ile Nasıl Başlatılır?
cd C:\Projeler\stok-takip
git init
git status
git add .
git commit -m "İlk sürüm: proje iskeleti eklendi"
git log --oneline
git init klasörde gizli bir .git dizini oluşturur ve tüm geçmiş burada tutulur. git status hangi dosyaların değiştiğini ve hangilerinin hazırlık alanında olduğunu gösterir. git add . tüm değişiklikleri hazırlık alanına ekler, git commit ise bunları açıklamasıyla kalıcı olarak kaydeder.
İyi Bir Commit Mesajı Nasıl Yazılır?
Commit mesajı ne yapıldığını kısa ve net anlatmalıdır. Duzeltme veya guncelleme gibi mesajlar birkaç ay sonra hiçbir şey ifade etmez. Fatura listesinde tarih filtresi hatası giderildi gibi bir mesaj ise geçmişte arama yaparken işinizi kolaylaştırır.
.gitignore Dosyası Nedir?
Bazı dosyaların depoya hiç girmemesi gerekir: parola içeren ayar dosyaları, veritabanı dosyaları, günlükler, derleme çıktıları ve bağımlılık klasörleri. Proje köküne oluşturulan .gitignore dosyası bu dosyaları Git takibinin dışında bırakır.
# Ayar ve gizli bilgiler
config.php
.env
# Veritabanı ve günlükler
*.db
*.sqlite
logs/
# Bağımlılıklar ve derleme çıktıları
vendor/
node_modules/
bin/
obj/
Pratik bir yöntem, config.php yerine config.ornek.php adlı, parolaları boş bırakılmış bir örnek dosyayı depoya eklemektir. Projeyi yeni sunucuya kuran kişi bu dosyayı kopyalayıp kendi bilgilerini girer.
Branch Nedir ve Nasıl Kullanılır?
Dallar, ana kodu bozmadan yeni özellik geliştirmeyi sağlar. Özellik tamamlanıp test edildikten sonra ana dala birleştirilir.
# Yeni dal oluştur ve geç
git switch -c excel-aktarim
# Değişiklikleri yap ve kaydet
git add .
git commit -m "Stok listesine Excel dışa aktarma eklendi"
# Ana dala dön ve birleştir
git switch main
git merge excel-aktarim
# Artık gerekmeyen dalı sil
git branch -d excel-aktarim
Birleştirme Çakışması Nasıl Çözülür?
İki dalda aynı dosyanın aynı satırları farklı şekilde değiştirildiyse Git hangisini seçeceğini bilemez ve çakışma bildirir. Dosyada çakışan kısım işaretlerle gösterilir:
<<<<<<< HEAD
$sayfaBasina = 20;
=======
$sayfaBasina = 50;
>>>>>>> excel-aktarim
Doğru olan satırı bırakıp işaretleri silin, ardından dosyayı git add ile ekleyip git commit ile birleştirmeyi tamamlayın.
Uzak Depo ile Nasıl Çalışılır?
Yerel depoyu GitHub veya kendi sunucunuzdaki bir depoya bağlamak için şu komutlar kullanılır:
# Uzak depoyu tanımla ve ilk gönderimi yap
git remote add origin https://github.com/kullanici/stok-takip.git
git push -u origin main
# Sonraki gönderimler
git push
# Başkalarının değişikliklerini al
git pull
# Var olan bir depoyu bilgisayara indir
git clone https://github.com/kullanici/stok-takip.git
git pull komutunu çalışmaya başlamadan önce kullanmak iyi bir alışkanlıktır. Böylece başkasının yaptığı değişikliklerin üzerine çalışır ve gereksiz çakışmalardan kaçınırsınız.
Hatalı İşlemler Nasıl Geri Alınır?
| Durum | Komut | Açıklama |
|---|---|---|
| Kaydedilmemiş değişikliği iptal et | git restore dosya.php | Dosyayı son commit haline döndürür |
| Hazırlık alanından çıkar | git restore --staged dosya.php | Değişiklik kalır, yalnızca hazırlıktan çıkar |
| Son commit mesajını düzelt | git commit --amend | Henüz gönderilmemiş commit için |
| Son commit kaydını geri al | git reset --soft HEAD~1 | Değişiklikler hazırlık alanında kalır |
| Gönderilmiş commit etkisini geri al | git revert commit_kodu | Tersini yapan yeni bir commit oluşturur |
Uzak depoya gönderilmiş commitlerde reset yerine revert kullanmak gerekir. Reset geçmişi yeniden yazdığı için ekipteki diğer kişilerin depolarıyla uyumsuzluk yaratır.
Sahadan Gözlem: Canlı Sunucuda Git Disiplini
Birden fazla PHP sitesini yönetirken en sık yaşanan sorun, canlı sunucuda doğrudan dosya düzenlenmesi ve bu değişikliğin yerel kopyada olmamasıdır. Bir sonraki güncellemede yerel dosya yüklendiğinde sunucudaki düzeltme sessizce kaybolur.
Tüm değişiklikleri önce yerelde yapıp commit etmek, ardından sunucuya aktarmak bu sorunu ortadan kaldırır. SQLite kullanan projelerde veritabanı dosyasını mutlaka .gitignore ile dışarıda bırakmak gerekir. Aksi halde yerel test veritabanı canlı verinin üzerine yazılabilir. Parola içeren ayar dosyalarının depoya hiç girmemesi de aynı disiplinin parçasıdır. Bir kez gönderilen parola, dosya sonradan silinse bile geçmişte kalır.
En Çok Kullanılan Git Komutları Özeti
git status: Çalışma dizininin durumunu gösterir.git add: Değişiklikleri hazırlık alanına ekler.git commit -m: Değişiklikleri açıklamasıyla kaydeder.git log --oneline: Geçmişi kısa biçimde listeler.git diff: Kaydedilmemiş değişiklikleri satır satır gösterir.git switch: Dallar arasında geçiş yapar.git merge: Dalları birleştirir.git pushvegit pull: Uzak depo ile eşitleme yapar.

0 Yorum