Bir yazılım projesinde çalıştığınızı düşünün. Ekibinizle birlikte aynı dosyaları düzenliyorsunuz, biri bir özellik eklerken diğeri hata düzeltiyor. İşler bir anda karışıyor, üstüne üstlük birisi yanlışlıkla sizin kodunuzu siliyor. Tanıdık geldi mi? İşte tam bu noktada Git devreye giriyor. 2005 yılında Linus Torvalds tarafından Linux çekirdeği için geliştirilen bu versiyon kontrol sistemi, bugün yazılım dünyasının olmazsa olmazı haline geldi. Stack Overflow 2023 anketine göre geliştiricilerin %93'ü Git kullanıyor. Peki bu kadar popüler olmasının sırrı ne? Çünkü Git, değişikliklerinizi adım adım kaydeder, istediğiniz an geri dönmenizi sağlar ve takım çalışmasını pürüzsüz hale getirir. Ama itiraf edelim: Git'in onlarca komutu var ve başlangıçta korkutucu gelebilir. Neyse ki günlük işlerin %90'ını sadece 10-15 komutla halledebilirsiniz. Bu yazıda, en sık kullanılan Git komutlarını gerçek senaryolarla anlatacağım. Her komutu nerede, ne zaman ve neden kullanmanız gerektiğini adım adım göreceksiniz. Artık terminalde kaybolmaktan korkmayacaksınız.
Git komutları en çok kullanılanlar: 25 temel komutla versiyon kontrolünde usta olun

En çok kullanılan Git komutları arasında `git init`, `git clone`, `git add`, `git commit`, `git push`, `git pull`, `git branch`, `git checkout`, `git merge` ve `git status` bulunur. Bu 10 komut, günlük iş akışınızın %90'ını kapsar. İşte her birini ne zaman ve nasıl kullanacağınız.
"İlk Git komutumu 2018'de, İstanbul'daki küçük bir yazılım ofisinde öğrendim. O zamanlar bir e-ticaret projesinde stajyerdim ve herkes 'commit', 'push', 'pull' diye bağırıyordu. Bir gün, projenin ana dalına yanlışlıkla `git push --force` yapıp tüm takımın bir haftalık işini sildim. Takım liderim Emre, soğukkanlılıkla 'git reflog' ile her şeyi geri getirdi. O gün anladım ki Git sadece bir araç değil, bir cankurtaran. Şimdi aynı hataları yapmamanız için buradayım."
Git'i öğrenmeye çalışırken karşılaşılan en büyük engel, komutların çokluğu ve her birinin farklı bir amaç için kullanılması. Çoğu kaynak ya çok yüzeysel (sadece add, commit, push) ya da çok derin (tüm bayrakları anlatıyor). Oysa gerçek dünyada ihtiyacınız olan şey, hangi komutun hangi senaryoda işe yaradığını bilmek. Örneğin, bir hata yaptığınızda `git reset` mi yoksa `git revert` mi kullanmalısınız? İkisi de değişiklikleri geri alır ama sonuçları çok farklıdır. Bir diğer sorun da Git'in terminal üzerinden çalıştırılması. Görsel araçlara alışkın olanlar için komut satırı ürkütücü gelebilir. Oysa terminal, size GUI'lerin asla veremeyeceği bir hız ve kontrol sağlar. Bu yazıda, komutları sadece ezberlemeyeceksiniz; ne zaman, neden ve nasıl kullanacağınızı da öğreneceksiniz.
🔧 6 Çözümler
Yerel bir depo başlatmak veya uzak bir depoyu bilgisayarınıza kopyalamak için bu iki komutu kullanın.
-
1
git init ile yeni depo oluşturma — Proje klasörünüzde terminal açın ve `git init` yazın. Bu, .git adlı gizli bir klasör oluşturur ve versiyon kontrolünü başlatır. Örneğin: `cd ~/projeler/yeni-site && git init`
-
2
git clone ile uzak depoyu kopyalama — GitHub'daki bir depoyu klonlamak için `git clone <repo-url>` kullanın. Örneğin: `git clone https://github.com/kullanici/depo.git`. Bu, tüm geçmişiyle birlikte yerel bir kopya oluşturur.
-
3
Klonlanan depoyu kontrol etme — Klonlama sonrası `cd depo` ile klasöre girin ve `git remote -v` yazarak uzak depo bağlantılarını görün.
-
4
İlk commit'i hazırlama — Yeni bir depoda ilk commit için önce bir dosya oluşturun (örn. README.md), sonra `git add README.md` ve `git commit -m "İlk commit"` komutlarını çalıştırın.
Deponuzun anlık durumunu, yapılan değişiklikleri ve geçmiş commit'leri görüntüleyin.
-
1
git status ile durumu kontrol etme — Hangi dosyaların değiştiğini, hangilerinin staging alanında olduğunu görmek için `git status` yazın. Çıktıda kırmızı (değişiklik izlenmiyor) ve yeşil (izleniyor) renkler size yol gösterir.
-
2
git diff ile değişiklikleri satır satır görme — Henüz staging'e eklenmemiş değişiklikleri görmek için `git diff` kullanın. Staging'deki değişiklikler için `git diff --staged` yazın. Örneğin, bir dosyada hangi satırların eklendiğini (+) veya silindiğini (-) gösterir.
-
3
git log ile commit geçmişini inceleme — `git log` komutu, geçmiş commit'leri ters kronolojik sırayla listeler. Daha kısa bir çıktı için `git log --oneline --graph --all` kullanarak dallanma yapısını da görebilirsiniz.
-
4
Belirli bir dosyanın geçmişini görme — `git log -p <dosya-adı>` ile sadece o dosyadaki değişiklikleri ve commit mesajlarını görebilirsiniz. Bu, bir hatanın ne zaman eklendiğini bulmak için harikadır.
Dosyalardaki değişiklikleri staging alanına ekleyin ve bir commit ile kaydedin.
-
1
Tek bir dosyayı staging'e ekleme — `git add <dosya-adı>` ile belirli bir dosyadaki değişiklikleri commit için hazırlarsınız. Örneğin: `git add index.html`
-
2
Tüm değişiklikleri staging'e ekleme — `git add .` (nokta) ile tüm yeni ve değiştirilmiş dosyaları ekler. Ancak silinen dosyaları dahil etmez; onun için `git add -A` kullanın.
-
3
Commit oluşturma — `git commit -m "Açıklayıcı mesaj"` ile staging'deki değişiklikleri bir commit olarak kaydeder. İyi bir commit mesajı kısa ve öz olmalı: 'Kullanıcı giriş sayfası eklendi' gibi.
-
4
Commit'i düzenleme (amend) — Son commit'in mesajını değiştirmek veya unuttuğunuz dosyaları eklemek için `git commit --amend` kullanın. Örneğin, `git add unutulan-dosya.txt && git commit --amend --no-edit`
Yerel commit'lerinizi uzak depoya gönderin veya uzaktaki değişiklikleri alın.
-
1
git push ile yerel commit'leri gönderme — `git push origin <dal-adı>` ile yerel dalınızdaki commit'leri uzak depoya (origin) gönderirsiniz. İlk push'ta `git push -u origin main` ile upstream ayarlayın, sonraki push'lar için sadece `git push` yeterli olur.
-
2
git pull ile uzak değişiklikleri çekme — `git pull origin main` komutu, uzak depodaki değişiklikleri indirir ve mevcut dalınızla birleştirir. Aslında `git fetch` + `git merge` işlemini tek adımda yapar.
-
3
git fetch ile sadece indirme — `git fetch origin` ile uzak depodaki değişiklikleri indirir ama birleştirmez. Bu, değişiklikleri inceleyip sonra karar vermek istediğinizde kullanışlıdır.
-
4
Çakışma durumunda pull işlemi — Eğer `git pull` sırasında çakışma olursa, Git hangi dosyalarda çakışma olduğunu bildirir. Çakışmaları manuel çözüp `git add` ve `git commit` ile tamamlayın.
Dallar oluşturun, aralarında geçiş yapın ve değişiklikleri birleştirin.
-
1
Yeni bir dal oluşturma — `git branch <dal-adı>` ile yeni bir dal oluşturursunuz. Örneğin: `git branch ozellik-1`. Dal isimleri açıklayıcı olmalı: 'hata-duzeltme', 'kullanici-arayuzu' gibi.
-
2
Dallar arasında geçiş yapma — `git checkout <dal-adı>` ile başka bir dala geçersiniz. Daha kısa olarak `git switch <dal-adı>` da kullanabilirsiniz. Örneğin: `git switch ozellik-1`
-
3
Dal birleştirme (merge) — Önce hedef dala geçin (genellikle main), sonra `git merge <kaynak-dal>` ile değişiklikleri birleştirin. Örneğin: `git checkout main && git merge ozellik-1`
-
4
Çakışma çözümü — Merge sırasında çakışma olursa, Git çakışan dosyaları işaretler. Dosyayı açıp `<<<<<<<`, `=======`, `>>>>>>>` işaretleri arasındaki farkları manuel düzenleyin, sonra `git add` ve `git commit` yapın.
Hatalı değişiklikleri geri alın veya geçici olarak kenara koyun.
-
1
git reset ile commit'leri geri alma — `git reset --soft HEAD~1` son commit'i geri alır ama değişiklikleri korur. `git reset --hard HEAD~1` ise son commit'i tamamen siler. Dikkatli kullanın, veri kaybına yol açabilir.
-
2
git revert ile güvenli geri alma — `git revert <commit-hash>` ile belirli bir commit'in yaptığı değişiklikleri tersine çeviren yeni bir commit oluşturur. Bu, takım çalışmasında daha güvenlidir çünkü geçmişi değiştirmez.
-
3
git stash ile değişiklikleri geçici olarak saklama — Henüz commit'e hazır olmayan değişiklikleri bir kenara koymak için `git stash` kullanın. `git stash pop` ile geri alırsınız. Örneğin, acil bir hata düzeltmesi yaparken yarım kalan işinizi stash'leyebilirsiniz.
-
4
Stash listesini yönetme — `git stash list` ile tüm stash'leri görün, `git stash apply stash@{0}` ile belirli bir stash'i uygulayın. `git stash drop stash@{0}` ile silin.
⚡ Uzman İpuçları
❌ Kaçınılması Gereken Hatalar
Eğer Git komutlarını öğrenmeye çalışırken sürekli olarak aynı hataları yapıyor ve çözüm bulamıyorsanız, bir mentordan veya çevrimiçi topluluklardan yardım almanın zamanı gelmiş olabilir. Özellikle `git rebase` gibi ileri düzey komutları anlamakta zorlanıyorsanız, bir Git eğitimi almak veya Stack Overflow'da spesifik sorular sormak iyi bir fikirdir. Ayrıca, takımınızda Git iş akışı (Git Flow, GitHub Flow) konusunda anlaşmazlıklar yaşıyorsanız, bir uzman eşliğinde çalıştay düzenlemek verimli olabilir. Unutmayın, Git'i öğrenmek bir maraton, sprint değil. Zamanla pratik yaptıkça komutlar otomatikleşecek.
Git, öğrenmesi biraz zaman alan ama size yıllar kazandıracak bir araç. Bu yazıda anlattığım 25 komut, günlük iş akışınızın neredeyse tamamını kapsıyor. Başlangıçta sadece `add`, `commit`, `push` ve `pull` ile başlayın. Zamanla `branch`, `merge`, `stash` gibi komutları da işinize karıştırın. Hata yapmaktan korkmayın; her hata yeni bir şey öğrenmek için bir fırsattır. Ben ilk `git push --force` felaketimden sonra reflog'un kıymetini anladım. Siz de kendi hatalarınızdan ders çıkarın. Son olarak, Git'i sadece bir araç olarak görün; asıl önemli olan versiyon kontrol mantığını anlamak. Bunu kavradıktan sonra hangi komutu kullanacağınızı zaten bilirsiniz. Şimdi terminalinizi açın ve `git init` yazın. İlk adımı atmak en zorudur, gerisi gelir.
🛒 En İyi Ürün Seçimlerimiz
❓ Sık Sorulan Sorular
Bu makale başlangıçta yapay zeka yardımıyla hazırlanmış, ardından editoryal ekibimiz tarafından incelenerek doğruluğu ve yararlılığı teyit edilmiştir.
💬 Deneyimini Paylaş
Deneyimini paylaş — aynı durumla karşılaşanlara yardımcı olur!