Blog Yazısı

← Tüm Blog Yazılarına Dön
Versiyon Kontrol & Git • 6 Kasım 2026 • 6 dk okuma

Yazılımcıların En Sık Karşılaştığı 5 Git Hatası ve Adım Adım Çözüm Yolları

Git kullanırken panik anlarında hayat kurtaran çözümler: Yanlış branch'e commit atma, merge conflict çözümü, son commit mesajını değiştirme, yarım kalan işleri saklama (stash) ve detached HEAD durumundan çıkış rehberi.

Terminalde çalışırken kırmızı harflerle parlayan bir 'CONFLICT', 'fatal: refusing to merge unrelated histories' veya 'detached HEAD' uyarısıyla karşılaşmak... Hangi kıdem seviyesinde olursanız olun, Git bir gün mutlaka sizi de terletir. Birçok yazılımcı bu anlarda panikleyip depoyu silip yeniden klonlama (clone) refleksine kapılır. Oysa Git'in altında yatan mimari o kadar sağlamdır ki, diskiniz fiziksel olarak yanmadığı sürece commit ettiğiniz hiçbir şeyi kaybetmezsiniz. İşte günlük yazılım hayatında en sık karşılaşılan 5 Git krizi ve terminalde adım adım kurtarma reçeteleri:

1. Kriz: Merge Conflict (Birleştirme Çatışması)
İki farklı dalda (branch) aynı dosyanın aynı satırları üzerinde değişiklik yapıldığında ve bunları birleştirmek istediğinizde Git 'Hangisini seçeceğimi ben bilemem, kararı sen ver' der ve çatışma fırlatır.

Nasıl Çözülür?
Panik yapmayın. Çatışan dosyayı kod editörünüzde açın. Karşınıza şu işaretler çıkacaktır:
<<<<<<< HEAD (Sizin dalınızdaki kod)
=======
>>>>>>> diger-dal (Gelen dalın kodu)
Editörünüzde kalmasını istediğiniz doğru kod bloğunu seçin, bu özel işaretleri (<<<<, ===, >>>>) tamamen silip dosyayı kaydedin. Ardından terminale sırasıyla:
git add .
git commit -m 'Çözüm: Merge conflict giderildi'
komutlarını girerek birleştirmeyi tamamlayın.

2. Kriz: Yanlış Branch'e Commit Attım (Ama Henüz Pushlamadım!)
Dal dal gezerken unutup 'main' dalında doğrudan geliştirme yaptınız ve 'git commit' dediniz. Oysa bu kodların 'ozellik/yeni-panel' dalında olması gerekiyordu.

Nasıl Çözülür?
Hiç korkmayın, commit henüz sunucuya (GitHub'a) gitmediği için geri alması saniyeler sürer:
git reset --soft HEAD~1
Bu komut; son yaptığınız commit'i iptal eder ancak yazdığınız kodları ASLA SİLMEZ. Kodlarınız staging alanında (hafızada) hazır bekler. Şimdi doğru dalı açıp kodları oraya taşıyın:
git switch -c ozellik/yeni-panel
git commit -m 'Yeni özellik eklendi'
İşte bu kadar; ana dal tertemiz kaldı, kodlarınız ise doğru dala taşındı.

3. Kriz: Son Commit Mesajını veya Unutulan Dosyayı Düzeltmek
Commit mesajında utanç verici bir yazım hatası yaptınız ('Fixd bug' gibi) ya da commit'e eklemeyi unuttuğunuz küçük bir dosya kaldı.

Nasıl Çözülür?
Eğer sadece commit mesajını değiştirmek istiyorsanız:
git commit --amend -m 'Doğru ve profesyonel commit mesajı'
Eğer bir dosyayı commit'e dahil etmeyi unuttuysanız:
git add unutulan_dosya.py
git commit --amend --no-edit
Bu işlem yeni bir commit oluşturmaz; var olan son commit'in içine unutulan dosyayı sessizce ekler.

4. Kriz: 'İşim Bitmedi Ama Acil Başka Branch'e Geçmem Lazım!'
Bir özellik üzerinde çalışırken kodlarınız yarım yamalak, testler patlıyor... Tam bu sırada canlı sunucuda acil bir hata çıktı ve hemen ana dala geçip 'hotfix' yapmanız gerekiyor. Yarım kodları commit atıp depoyu kirletmek istemiyorsunuz.

Nasıl Çözülür?
Git'in sihirli çekmecesi 'stash' imdadınıza yetişir:
git stash
Bu komutu yazdığınız anda çalışma alanınızdaki tüm bitmemiş değişiklikler rafa kaldırılır ve deponuz tertemiz hale gelir. İstediğiniz dala geçip acil işinizi halledin. Geri döndüğünüzde ise:
git stash pop
komutunu vererek rafa kaldırdığınız yarım kodları aynen kaldığınız yerden geri çağırabilirsiniz.

5. Kriz: 'You are in detached HEAD state' Uyarısı
Geçmiş bir commit'e bakmak için 'git checkout abc1234' yazdınız ve terminal aniden 'detached HEAD' (kopuk kafa) durumuna geçtiğinizi söyledi.

Nasıl Çözülür?
Bu durum Git'in hiçbir dala bağlı olmadan sadece geçmişteki bir fotoğrafa baktığınızı söyler. Panik yapmayın, deponuz bozulmadı. Eğer sadece bakıp geri dönmek istiyorsanız:
git switch main
komutunu yazarak doğrudan ana akışa dönebilirsiniz. Eğer o geçmiş noktada değişiklikler yaptıysanız ve onları kaybetmek istemiyorsanız:
git switch -c kurtarilan-deneme
yazarak o noktadan yeni bir dal türetip yolunuza devam edebilirsiniz.

Altın Tavsiye: 'git push --force' Komutunu Asla Bilinçsizce Kullanmayın!
İnternetteki bazı forumlarda sorun yaşayanlara hemen 'git push -f' önerilir. Ekip projelerinde force push yapmak, ekip arkadaşlarınızın sunucudaki kodlarının üzerine yazarak silinmesine neden olabilir. Terminalde ne yaptığınızdan emin değilseniz, önce bir 'git status' çekip mevcut durumu okumak ve komutları sindirerek çalıştırmak her zaman en güvenli yoldur.

← Diğer Yazılar Fikirlerini Paylaş →