Ana içeriğe atla

Projeyi Bozmadan Git Depolarından Dosyalar Nasıl Kaldırılır

Git deposunda dosyaların nasıl kaldırılacağını öğrenin, yaygın hatalardan kaçının ve karmaşık ya da hassas senaryolarda bile deponuzu temiz şekilde yönetin.
Güncel 3 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Git’te dosya kaldırmak her zaman göründüğü kadar basit değildir. Sistemde bir dosyayı silersiniz ama bu, depodan da silindiği anlamına gelmez. Geçmişinizde hâlâ var olabilir ya da daha kötüsü, bir yapılandırma dosyası veya bir API anahtarı gibi, yanlışlıkla commit edilebilir.

Bu kılavuzda, Git’ten dosyaların nasıl kaldırılacağını öğreneceksiniz. git rm gibi temel komutlarla başlayacak, ardından izlenmeyen dosyaları temizleme ve commit geçmişini düzenleme gibi daha gelişmiş yöntemlere geçeceğiz.

Önkoşullar

Git ile dosyaları kaldırmadan önce, her şeyin kurulu olduğundan emin olalım.

Önce, Git yüklü mü kontrol edin. Terminalinizi açıp şunu çalıştırın:

git --version

Bir sürüm numarası görüyorsanız, hazırsınız. 

Installing git

Bir sürüm numarası görüyorsanız, hazırsınız.

Görsel bir arayüz tercih ediyorsanız GitHub Desktop, Sourcetree veya GitKraken gibi bir Git GUI’si de kurabilirsiniz. Ancak bu kılavuzda komut satırını (Git Bash) kullanacağım.

Bir ekibin parçasıysanız veya GitHub ya da GitLab gibi uzak bir depoyla çalışıyorsanız, özellikle depoda değişiklik yapma izniniz olduğundan emin olun.

Not: Bazı dosya kaldırma işlemleri geri alınamaz. Bu yüzden, dosyaları silen herhangi bir komut çalıştırmadan önce projenizin yedeğini almak veya en azından deponuzun durumunu iki kez kontrol etmek iyi bir fikirdir.

Her şey tamamsa başlayalım.

Git’te Temel Dosya Kaldırma

Git’te dosya kaldırmanın, yapmak istediğinize bağlı olarak birkaç yolu vardır. Yaygın seçeneklere bakalım:

git rm kullanma

git rm komutu, dosyaları Git deponuzdan kaldırır. Çalıştırdığınızda iki şey olur:

  • Git dosyayı çalışma dizininizden kaldırır
  • Bu değişikliği bir sonraki commit için sahneler

Ancak Git yalnızca dosyayı silmez. Silmeyi geçmişinizde izler. Commit’i yaptığınızda, dosya projeden resmen kaldırılmış olur.

git rm file1.txt

deleting a file using the git rm command.

Tek bir dosyayı, çok sayıda dosyayı veya joker karakterler kullanarak bir dosya grubunu kaldırabilirsiniz. 

Örneğin, tüm log dosyalarını kaldırmak için:

git rm *.log

Bu, klasörde .log ile biten her dosyayı kaldırmasını Git’e söyler. Değişikliği şu komutla doğrulayabilirsiniz:

git status

Deleting multiple files with one git rm command.

Tek bir git rm komutuyla birden fazla dosyayı silin. Görsel: Yazar.

Bir klasörün içindeki tüm dosyaları, klasörü silmeden kaldırmak mı istiyorsunuz? Şunu kullanın:

git rm temp/*

Bu, temp klasörünün içindeki her dosyayı, klasörün kendisini silmeden kaldırır.

Deleting files inside a folder using git rm command.

Git ayrıca bazı güvenlik kontrolleri ekler. Bir dosyada henüz commit edilmemiş değişiklikler varsa, zorlamadığınız sürece Git onu silmez. Bu yüzden bunu yalnızca o değişikliklerin atılabileceğinden eminseniz kullanın:

git rm -f

Removing uncommitted file using the -f option.

Tam bir klasörü ve içindekilerin tamamını kaldırmak için -r bayrağını ekleyin:

git rm -r testfolder

Bu, testfolder klasörünü ve içindeki tüm dosyaları kaldırır.

Removing the entire folder and its content using the git rm -r command.

Şimdi, değişikliği commit etmek için şu komutu çalıştırın:

git commit -m "removed log files”

Commit the deletion with git commit command.

Önemli git rm seçenekleri

git rm ile en sık kullanacağınız seçenekler şunlardır:

1. <filename>

Bu temel kullanımdır. Kaldırmak istediğiniz dosyaları listeleyin:

git rm file1.txt file2.txt

Aynı türden birden çok dosyayı kaldırmak için de joker karakter kullanabilirsiniz. Örneğin, tüm .txt dosyalarını kaldırmak için:

git rm *.txt

(Burada * hepsi demektir. .txt ile biten herhangi bir dosya adını eşleştirir.)

2. --cached

Bu, dosyayı depodan kaldırır ancak bilgisayarınızda bırakır. Diyelim ki yanlışlıkla config.env gibi hassas bir dosyayı ekledim. Depoda olmasını istemiyorum ama makinemde lazım. O zaman şunu çalıştırırım:

git rm --cached config.env

Burada, git rm onu depodan ve çalışma dizininden siler. --cached ise Git’te izlemesini bırakır (dolayısıyla push edilmez) ama fiziksel olarak yerinde bırakır.

Tekrar eklenmesini önlemek için .gitignore’a ekleyin:

echo config.env >> .gitignore

Stop tracking the file using the --cached option in git rm.

3. -r

Özyinelemeli (recursive) anlamına gelir. Tek bir dosya yerine, dizini ve içeriğini özyinelemeli olarak siler. Bunu kullanmadan bir klasörü kaldırmaya çalışırsanız Git hata verir.

git rm -r <folder-name>

Burada testfolder adında bir klasör ve içinde a.txt ile b.txt adlı iki dosya oluşturdum. Ardından şu komutu çalıştırdım:

git rm -r testfolder

Bu, klasörü ve içindeki tüm içerikleri ve dosyaları kaldırdı

Remove the entire folder using the -r option.

4. --dry-run

Bir dosyayı kaldırınca ne olacağından emin değilseniz, git rm’i --dry-run seçeneğiyle şöyle kullanın:

git rm --dry-run <filename>

Bu, neyin kaldırılacağını güvenli şekilde önizlemenin bir yoludur. 

Preview the files before removing with the --dry-run option.

Ya da izlenmeyen dosyaları temizlerken nelerin kaldırılacağını iki kez kontrol etmek istiyorsanız, şunu kullanın:

git clean -n

Bu komutun neleri sileceğini yalnızca gösterir.

Preview the untracked file before deleting with git clean -n command.

Karşılaştırmalı İş Akışı Analizi

Git’te bir dosyayı kaldırmanın birden fazla yolu vardır. Yöntemler aynı gibi görünse de davranışları aynı değildir.

git rm vs manuel silme

file.txt adlı bir dosya düşünün. Artık gerekmediğini varsayalım.

Bunu kaldırmanın bir yolu, doğrudan sistemden silmektir.

Linux, macOS veya Git Bash’te:

rm file.txt

Windows’ta (komut istemi): 

del file.txt

Remove the file with rm command and check the status with git status command.

Bu, dosyayı klasörünüzden siler. Ancak Git bunu henüz bilmez. Bu yüzden Git’e dosyanın kaldırıldığını elle söylemeniz gerekir:

git add file.txt

Bu, silmeyi bir sonraki commit’e dahil edilecek şekilde sahneler.

Stage the deletion with the git add command.

Birden çok dosyayı sildiyseniz ve hepsini hatırlamıyorsanız, şunu çalıştırabilirsiniz:

git add -u

Bu, izlenen ve değiştirilmiş veya silinmiş tüm dosyaları sahneler. İzlenmeyen dosyaları içermez.

Şimdi değişikliği commit edersiniz:

git commit -m "Remove file.txt"

git rm kullanırsanız, her şeyi tek adımda halleder. Dosyayı siler ve değişikliği anında sahneler:

git rm file.txtgit commit -m "Remove file.txt"

Ayrı ayrı git add çalıştırmaya gerek yoktur. Daha temizdir ve silmeyi sahnelemeyi unutmazsınız.

The git rm command deletes and stages the file in one go.

Kısacası:

  • Manuel silme, Git’in değişikliği algıladığından emin olmak için ek adımlar gerektirir.
  • Silmeyi sahnelemeyi unutursanız, Git dosyanın var olduğunu düşünmeye devam eder; bu da commit veya birleştirmelerde karışıklığa yol açabilir.
  • git rm, kasıtlı olarak izlenen dosyaları kaldırırken daha temiz ve daha güvenlidir.

Git’te silinen dosyaları geri yükleme

Bir dosyayı sildiniz ve sonra aslında hâlâ ihtiyacınız olduğunu fark ettiniz diyelim. Sorun değil. Git, hatayı ne zaman fark ettiğinize bağlı olarak onu geri getirmenin birkaç yolunu sunar.

Henüz commit etmediyseniz:

Dosyayı sildiniz ama değişikliği commit etmediniz diyelim. Onu son commit’ten şöyle geri yükleyebilirsiniz: 

git restore file.txt

Bu, dosyayı son commit’ten çalışma dizininize geri getirir.

Silmeyi zaten commit ettiyseniz:

Bu da sorun değil. Önce, dosyanın hâlâ mevcut olduğu son commit’i bulun:

git log -- file.txt

Günlüğü inceleyin ve dosyanın hâlâ orada olduğu commit hash’ini kopyalayın. Sonra şunu çalıştırın:

git checkout <commit hash> -- file.txt

Git’in eski sürümlerinde yukarıdaki komutu kullanabilirdiniz. Bu komut bir dosyayı belirli bir commit’ten geri yükler, ancak dalları da değiştirebilir.

Git 2.23’ten itibaren bu, iki daha anlaşılır komuta ayrıldı:

  • git switch (dallar arasında geçiş için)
  • git restore (dosyaları geri yüklemek için)

Yalnızca bir commit’ten bir dosyayı geri yüklemek istiyorsanız şunu kullanın:

git restore --source=<commit-hash> --file.txt

Bu, dosyayı o commit’ten alır ve çalışma dizininize geri koyar.

Dosyanın ne zaman silindiğinden emin değilseniz:

Belki bir sürü değişiklik yaptınız ve dosyanın ne zaman kaybolduğunu hatırlamıyorsunuz. Bu durumda git reflog veya referans günlüğünü kullanın: 

git reflog

Bu, Git commit’lerinizin, checkout’larınızın, reset’lerinizin ve her şeyin eksiksiz bir geçmişini gösterir.

Ancak git reflog yalnızca yereldir ve uzaklarda çalışmaz. Uzak bir depoyla çalışıyorsanız, o dosyanın geçmişini izlemek için git log -- file.txt kullanmak daha iyidir.

Dosyanın hâlâ mevcut olduğu noktayı bulduğunuzda, önceki gibi git checkout veya git restore ile geri yükleyin.

Git’te Eksik Dosyaları Düzeltme

Bazen dosyalar doğrudan sistemden silinir—belki bir dosya gezginiyle, terminalde rm komutuyla ya da yanlışlıkla. Bu olduğunda, Git kendiliğinden temizleme yapmaz. Bunun yerine o dosyaları eksik olarak işaretler ve kaldırmayı düzgün şekilde ele almanızı bekler.

Böyle bir durumda nasıl hareket etmeniz gerektiğine adım adım bakalım.

Adım 1: Eksik dosyaları kontrol edin

Bunu proje klasörünüzde çalıştırın:

git status

Check the file with the git status command.

Git bir dosyanın silindiğini söylüyorsa, bu onun sisteminizden kaldırıldığı ama değişikliğin henüz sahnelenmediği anlamına gelir.

Adım 2: Silmeyi sahneleyin 

Git’e tüm değişiklikleri (silinmiş dosyalar dahil) sahnelemesini söylemek için şunu çalıştırın:

git add -A
  • git add -A = tüm değişiklikleri sahneler (yeni, değiştirilmiş, silinmiş).
  • git add -u = değiştirilmiş + silinmişleri sahneler, ancak yeni dosyaları sahnelemez.

Bu, tüm dosya değişikliklerini sahneler: yeni, değiştirilmiş ve silinmiş. Ardından güncellemeyi commit edin:

git commit -m "Removed missing files"

Stage everything with the git add -A command.

Bu, tek seferde her değişikliği yakaladığı için temizlemenin en güvenli yoludur.

Adım 3: Uzağa push edin 

Uzak bir depoyla çalışıyorsanız, commit’i push edin:

git push origin <branch-name>

<branch-name> yerine main veya dev gibi üzerinde çalıştığınız dalı yazın.

Adım 4: Alternatif olarak

Diyelim ki bir sürü dosyayı manuel olarak sildiniz; belki yanlışlıkla ya da temizlik yaparken. Git, siz söyleyene kadar bu dosyaların var olduğunu düşünür.

git rm ile her birini kaldırmak istemiyorsanız, işleri daha hızlı toparlamanın bir yolu var.

Terminalinizde şu komutu çalıştırın:

git ls-files --deleted -z | xargs -0 git rm

Şunu yapar:

  • git ls-files --deleted, Git’in izlediği ama artık eksik olan tüm dosyaları listeler.
  • xargs -0 git rm, bu dosya adlarını git rm’ye aktarır ve Git’in indeksinden kaldırır.

Büyük bir projede çalışırken hızlı bir temizlik yapmak istediğinizde oldukça kullanışlıdır.

Automatically remove all missing files.

Not: Bu mesajı, diskinizde şu anda eksik olan izlenen dosya olmadığı için aldım.

Git’te Gelişmiş Dosya Kaldırma

Artık temelleri ele aldığımıza göre, git rm çalıştırmak kadar basit olmayan daha gelişmiş durumlara bakalım. Bunlar, ya hassas verilerin söz konusu olduğu ya da izlenmeyen dosyaların dikkatlice temizlenmesi gereken durumlar.

Git’ten hassas verileri kaldırma

Bazen API anahtarları veya parolalar gibi özel veriler içeren bir dosya yanlışlıkla commit edilir. Normal şekilde silmek işe yaramaz. Çünkü Git tam bir geçmiş tutar ve dosya önceki commit’lerde hâlâ mevcuttur.

Onu tamamen silmek için git filter-repo komutunu kullanabilirsiniz: git filter-repo (önerilir)

Bu, filter-branch’in daha yeni ve daha iyi bir alternatifidir. Daha hızlı, daha güvenli ve kullanımı daha kolaydır.

Önce yükleyin (Python ve pip gerekir):

pip install git-filter-repo

Sonra şunu çalıştırın:

git filter-repo --path hide.txt --invert-paths

Bu, deponuzun geçmişindeki her commit’ten hide.txt dosyasını kaldırır.

Doğrulamak için şunu çalıştırın:

git log --all -- supersecrets.txt

Dosya yoksa, tekrar izlenmesini önlemek için .gitignore’a ekleyin:

echo hide.txt >> .gitignore

Bir ekiple çalışıyorsanız, yeniden yazılmış geçmişi temizleyin ve değişiklikleri zorla push edin:

git push origin --force --all

Sonra ekip arkadaşlarınıza haber verin. Hatalardan kaçınmak için yerel kopyalarını yeniden klonlamaları veya sıfırlamaları gerekecek.

İzlenmeyen dosyaları git clean ile temizleme

Bunu parçalara ayıralım:

  • İzlenen dosyalar Git’in geçmişindedir. Bunları kaldırmak için git rm kullanın, ardından commit edin.
  • İzlenmeyen dosyalar Git’te hiç yoktur. Birikir ve projenizi kalabalıklaştırabilir.

İzlenmeyen dosya veya klasörleri silmek için git clean kullanın.

En kullanışlı seçenekler şunlardır:

git clean -n     # Show which untracked files will be removedgit clean -nd    # Show which untracked folders will be removedgit clean -fd    # Delete all untracked files and folders. It is destructive.

Use the git clean command to delete and untrack the files

Burada:

  • -n yalnızca önizleme demektir.
  • -f zorla sil demektir.
  • -d temizliğe klasörleri de dahil eder.

Not: git clean izlenen dosyalara dokunmaz. Ancak izlenmeyen her şeyi, tutmak istediğiniz dosyalar olsa bile, siler. Bu yüzden, neleri kaldıracağını görmek için her zaman önce -n kullanın.

GitHub ve GUI Araçlarında Dosya Kaldırma

Şimdiye kadar ele aldığımızın çoğu komut satırını kullanıyor. Ancak herkes böyle çalışmıyor ve bu tamamen normal. Bazı geliştiriciler doğrudan GitHub’da çalışırken görsel araçlar kullanıyor.

O hâlde, GitHub’ın web arayüzünde ve diğer GUI araçlarında dosya silmenin nasıl işlediğine ve bunun komut satırıyla nasıl karşılaştırıldığına bakalım.

GitHub web sitesinde dosya silme

GitHub’ın tarayıcı arayüzünde çalışıyorsanız, terminal kullanmadan dosya silebilirsiniz.

2025 arayüzünde nasıl çalıştığı şöyle:

  1. Silmek istediğiniz dosyayı açın.
  2. Sağ üst köşedeki üç noktaya tıklayın.
  3. Açılır menüden Delete file’ı seçin.

Deleting the file in the GitHub web interface

Ardından GitHub bir commit mesajı kutusu gösterir. Şu gibi kısa bir mesaj ekleyin:

Delete practice.py

İsteğe bağlı bir açıklama da yazabilirsiniz.

Sonra değişikliği nasıl kaydedeceğinizi seçin:

  • Doğrudan main dalına commit edin
  • Ya da yeni bir dal oluşturup bir çekme isteği (pull request) başlatın (ekip iş akışları için önerilir)

Commit changes’e tıklayın; GitHub dosyayı kaldırır ve silmeyi bir commit olarak kaydeder; tıpkı komut satırında git rm’in yaptığı gibi.

Git GUI araçlarıyla dosya silme

GitHub Desktop, Sourcetree veya Tower gibi bir Git GUI’si kullanıyorsanız işlem de basittir:

  1. Dosyayı dosya gezgininizde ya da uygulama içinde silin.
  2. Uygulama, silmeyi “Changes” veya “File Status” altında gösterir.
  3. Değişikliği inceleyin, sahneleyin ve commit edin.

Her araç biraz farklı görünür ama iş akışı benzerdir: Değişiklikleri görsel olarak takip eder, hazır olduğunuzda commit edersiniz.

Platforma göre en iyi uygulamalar

Farklı platformlarda dosya silme nasıl çalışır ve hangisi ne zaman daha faydalıdır, hızlıca bakalım:

  • GitHub (Web): Hızlı düzeltmeler ve küçük güncellemeler için iyi. Büyük temizlikler veya hassas dosyalar için kaçının. 
  • Git GUI araçları: Günlük çalışma için harika. Değişiklikleri görmek ve güvenle commit etmek kolaydır. 
  • Komut satırı: En esnek ve yardımcı olanıdır. Toplu düzenlemeler veya geçmiş değişiklikleri gibi ileri seviye görevler için idealdir. 

Git Dosya Kaldırma İçin En İyi Uygulamalar

Git’te dosya kaldırmak basit görünebilir, ancak tek bir hata kodunuzu bozabilir. Özellikle paylaşılan veya uzun soluklu projelerde silmelerin güvenli ve kontrollü olmasını sağlamak için kullandığım bazı pratik ipuçları şunlar.

Silmeden önce her zaman doğrulayın

Bir dosyayı kaldırmadan önce, ne yaptığını doğrulamak için bir dakikanızı ayırın:

  • Durumunu görmek için git status çalıştırın—sahnelenmiş mi, değiştirilmiş mi.
  • Commit geçmişini kontrol etmek için git log -- <filename> kullanın.

Bu hızlı kontrol, sonradan saatlerce kurtarma çalışması yapmanızı engeller.

Atomik commit’ler kullanın

Atomik commit, mantıksal değişiklik başına bir commit demektir.

Örneğin, kullanılmayan dosyaları siliyorsam, bu silmeleri kod düzenlemelerinden ayrı şekilde commit ederim.

Neden oldukça faydalıdır:

  • Hata ayıklama kolaylaşır. git bisect gibi araçlar commit’ler küçük ve odaklı olduğunda daha iyi çalışır.
  • Commit geçmişi temiz ve net kalır.
  • Kod incelemeleri daha hızlı ilerler.

Geçmiş yeniden yazımlarında dikkatli işbirliği yapın

git filter-repo gibi araçlarla geçmişi yeniden yazmak, ekipteki herkesi etkiler. Kargaşadan kaçınmak için:

  • Paylaşılan dalları yeniden yazmadan önce iletişim kurun.
  • Uzak geçmişi yeniden yazdığı için git push --force’u dikkatle kullanın.
  • Sonrasında ekip arkadaşlarına yerel depolarını yeniden klonlamalarını veya sıfırlamalarını söyleyin.

Yıkıcı komutları çalıştırmadan önce --dry-run kullanın

Dosya silen bir komutu çalıştırmadan önce mutlaka test edin:

git clean -n

Bu, hiçbir şey silmeden nelerin silineceğini gösterir. Bunu neden her zaman yapmanız gerektiğini düşünüyorum: 

  • Tutmak istediğiniz dosyaları yanlışlıkla silmenizi engeller.
  • Özellikle tek bir hatanın günlükleri veya üretilen dosyaları silebileceği büyük projelerde güvenlik ağıdır.

git rm --cached ile .gitignore’u birlikte kullanın

Depoda olmaması gereken bir şeyi (ör. bir yapılandırma dosyası veya loglar) yanlışlıkla commit ettiyseniz, bunu iki adımda düzeltin:

  1. Dosyanın izlenmesini kaldırın:```git rm --cached <filename>
git rm --cached <filename>

Bu, Git’e dosyayı izlemeyi bırakmasını söyler ama bilgisayarınızda bırakır.

  1. . gitignore’a ekleyin:
echo <filename> >> .gitignore

Neden faydalıdır:

  • .env, .log veya node_modules gibi hassas veya yerel dosyaları depodan uzak tutar.
  • Git geçmişinizin kalabalıklaşmasını önler.
  • Bu dosyalardaki gelecekteki düzenlemeler Git’te değişiklik tetiklemez.

Git’te Köşe Durumları: Sahneleme ve Boş Klasörler

Bazen dosya kaldırma beklediğiniz gibi gitmez. Yanlış dosyayı sahneleyebilir veya boş klasörlerle ilgili sorunlar yaşayabilirsiniz. 

Yaygın köşe durumlarını şöyle ele alıyorum.

Değişiklikleri kaybetmeden bir dosyanın sahnelenmesini kaldırma

git add . çalıştırdım ve yanlışlıkla sahnelemek istemediğim bir dosyayı sahneledim diyelim. Değişikliklerimi kaybetmek istemiyorum—sadece sahneden kaldırmak istiyorum.

Bunu düzeltmek için şunu çalıştırırım:

git reset HEAD <filename>

Bu, dosyanın sahnelenmesini kaldırır ancak düzenlemeleri yerinde tutar.

Doğrulamak için şunu kullanırım:

git status

Artık dosya "modified" (değiştirildi) olarak görünmeli, "staged" (sahnelenmiş) değil.

Boş klasörleri depoda tutma

Varsayılan olarak Git boş klasörleri yok sayar. İçinde dosya olmayan bir klasörü commit etmeye çalışırsam Git onu atlar.

Ama bazen o klasörü gelecekteki loglar veya yüklemeler için depoda tutmak isterim. Yaygın çözüm .gitkeep adlı yer tutucu bir dosya eklemektir.

Şöyle yaparsınız:

touch logs/.gitkeepgit add logs/.gitkeepgit commit -m "Keep logs folder in the repo"

Bu, klasörü "boş olmayan" hâle getirir; böylece Git onu izler.

Not: .gitkeep Git’e özgü yerleşik bir şey değildir. Sadece bir gelenektir. Dosyayı istediğiniz gibi adlandırabilirsiniz ama .gitkeep başkalarına amacını anlatır.

Git Dosya Kaldırmada Sorun Giderme

Git’te dosya kaldırırken karşılaştığım birkaç yaygın sorun ve çözümleri şunlar.

Dosya uzak depoda hâlâ görünüyor

Dosyayı sildiniz, değişikliği commit ettiniz ama uzak depoda hâlâ duruyor. Belki push etmeyi unuttunuz.

Şu komutu çalıştırdığınızdan emin olun:

git push origin <branch-name>

Ayrıca şunları kontrol edin:

  • Doğru dalda mısınız?
  • Commit’iniz gerçekten dosya silmeyi içeriyor mu?

Alt modüllerle ilgili sorunlar

Alt modüller, başka Git depolarının içinde bulunan Git depolarıdır. Normal klasörler gibi davranmazlar.

Bir alt modül içinde dosya siliyorsanız:

  • Alt modül klasörüne gidin
  • Değişiklikleri alt modül içinde commit edin ve push edin

Alt modülü tamamen kaldırıyorsanız:

  • Alt modül klasörünü silin
  • .gitmodules ve .git/config içindeki referansları kaldırın

Ayrık HEAD (Detached HEAD) durumu

Git’te HEAD genellikle geçerli dalı işaret eder. Bazen ise belirli bir commit’i işaret eder; buna ayrık HEAD denir.

Şunları yaparsanız gerçekleşir:

  • Bir commit’i hash’iyle checkout ederseniz
  • Bir etikete (tag) geçerseniz
  • Uzak bir dalı izlemeye ayarlamadan checkout ederseniz

Durumunuzu kontrol edin:

git status

Eğer şunu görürseniz:

HEAD detached at <commit-hash>

Bir dalda değilsiniz ve yaptığınız yeni değişiklikler, başka bir yere geçtiğinizde kaybolabilir.

HEAD Detached in removing the file in git

Bunu şöyle düzeltebilirsiniz: 

Değişiklik yaptıysanız ve onları korumak istiyorsanız şunu çalıştırın:

git checkout -b <new-branch-name>

Bu, çalışmalarınızı yeni bir dala koyar ve kaydeder.

HEAD Reattached in git

Değişiklikleri zaten commit ettiyseniz ve onları sonra başka bir dala taşımak istiyorsanız, şunu yapın:

git checkout -b temp-branch          # from detached HEADgit checkout main                    # or another target branchgit merge temp-branch

Hiç değişiklik yapmadıysanız ve yalnızca ayrık HEAD durumundan çıkmak istiyorsanız şunu çalıştırın:

git checkout <branch-name> 

Hepsi bu. HEAD yeniden bağlandı ve her şey normale döndü.

İzin veya durum hataları

Bazen Git bir dosyayı silemez, özellikle Windows’ta. Şu durumlarda olabilir:

  • Dosya başka bir programda açıktır
  • Git’in dosyayı güncelleme izni yoktur

Bunu şöyle düzeltin:

  • Dosyayı kullanan tüm uygulamaları kapatın
  • Terminalinizi Yönetici olarak yeniden başlatın (Windows’ta)

Birleştirme veya rebase sorunları

Şuna benzer hatalar görürseniz:

  • you are not currently on a branch
  • merge conflict

Muhtemelen bir birleştirme veya rebase ortasındasınız.

Çakışmaları çözdükten sonra bir rebase’i bitirmek için:

git rebase --continue

Rebase veya birleştirmeyi tamamen iptal etmek için:

git reset --merge

Bu, deponuzu birleştirme başlamadan önceki hâline döndürür.

Tüm yerel değişiklikleri atmak ve çalışma dizininizi sıfırlamak mı istiyorsunuz? 

Şunu deneyin:

git restore .

Bu, tüm dosyaları son commit edilmiş hâline döndürür.

Son Düşünceler 

Git’te dosya kaldırırken, dikkat etmezseniz hata yapmak kolaydır. Küçük bir hata daha büyük sorunlara yol açabilir: bozulan kod, kaybolan çalışmalar veya ekibinizde karışıklık. Bu yüzden, ne yaptığınızı iki kez kontrol etmek için bir an ayırın.

Duruma uygun komutu kullanın. Bir şeyin ne yapacağından emin değilseniz, önce dry run ile test edin. Ve başkalarıyla çalışıyorsanız, herkesin aynı noktada olduğundan emin olun.

Git, dosya silmenin ötesinde çok daha fazlasını yapabilir. Dalları silebilir,  reset ve revert ile hataları geri alabilir ya da git diff ile tam olarak nelerin değiştiğini görebilirsiniz. Ne kadar çok öğrenirseniz, iş akışınız o kadar pürüzsüzleşir.

Adım adım ilerleyin. Bu işlerde böyle ustalaşılır.

Git Dosya Kaldırma SSS

“Silmeyi sahnelemek” ne anlama geliyor?

Sahneleme (staging), değişiklikleri bir sonraki commit’inize hazırlamak demektir. git rm filename çalıştırdığınızda, Git dosyayı klasörünüzden siler ve bu silmenin bir sonraki commit’te kaydedilmesini hazırlar. Buna silmenin sahnelenmesi denir. Değişiklik, git commit çalıştırana kadar kalıcı olmaz.

git rm ile rm arasındaki fark nedir?

rm, yalnızca yerel klasörünüzden bir dosyayı siler. Git, siz belirtmedikçe bu değişikliği izlemez. 

git rm, dosyayı siler ve bir sonraki commit için silmeyi sahneler; böylece Git, onu depodan da kaldırır.

git push origin ile git push’u ne zaman kullanmalıyım?

Her biri ne zaman kullanılır:

  • Dalınız zaten bir uzak depoya bağlıysa git push kullanın. 
  • Yeni bir dalı push ederken ya da birden fazla uzak depo olduğunda hangi uzağa push edeceğinizi net belirtmek istediğinizde git push origin kullanın.

git pull ne yapar?

git pull, uzak depodaki en son değişikliklerle yerel dalınızı günceller. Uzak depodan yeni commit’leri getirir ve ardından bunları geçerli dalınıza birleştirir.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

Karmaşık konuları basitleştirmeyi seven bir içerik stratejistiyim. Splunk, Hackernoon ve Tiiny Host gibi şirketlerin hedef kitleleri için ilgi çekici ve bilgilendirici içerikler üretmelerine yardımcı oldum.

Konular
Git

En İyi DataCamp Kursları

Program

Git Temelleri

7 sa
Temel bilgilerden gelişmiş iş akışlarına kadar Git ile sürüm kontrolünü öğrenin. Değişiklikleri takip edin, depoları yönetin ve verimli bir şekilde işbirliği yapın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör