2009-12-06 20 views
17

Ben rm, Finder kullanarak bir Git deposundan dosya ve dizinleri bir demet silinmiş vb"git rm" yerine "rm" ile nasıl eklenir ve kaldırılır?

ben sanki kaldırılmak üzere işaretlenmiş olarak endekse bu kayıt edeceğiz a Git komutu arıyorum ben Onlara git rm adını vermişti.

git add -u'un bunu bir sürü başka şeyle birlikte yapacağını anlıyorum. Komutumun yalnızca kaldırma işlemlerini yürütmesini istiyorum.

+0

İlgili, ancak tam bir yinelenen: [Bir diskten zaten silinmiş bir Git repo'undan birden çok dosyayı kaldırma] (http://stackoverflow.com/q/492558/456814). Diğer soru, zaten "git rm" nin kaldırılmış dosyaları hazırlayabildiğini belirtiyor, sadece tek bir 'git rm' çağrısıyla hepsini sahneye koymanın bir yolunu arıyor. –

cevap

32

:

$ git rm `git ls-files -d` 

Daha sağlam:

$ git ls-files -z -d | xargs -0 --no-run-if-empty git rm 
+1

Repo'nun en üst düzey dizininden çalıştırılması gerektiğini unutmayın. –

4

Charles Bailey'in cevabı beni buna doğru dürttü, ama hala daha kısa bir şey bekliyoruz. Dosya adlarında boşluk olmadan

$ git diff --name-only --diff-filter=D | xargs git rm 
5

Bunlar da eşitlik, Jonio C Hamano git posta listesi de "Re: [PATCH 1/2] Documentation: 'git add -A' can remove files" post yazdıklarını bir göz atın soru XY problem gibi görünüyor (sorunun X çözümüyle ilgili problemi çözdüğünüzü soruyorsunuz). (Eğer öyleyse gerçekten "XY sorunu" durum) sorununa çözüm olabilir: otomatik dizini

  • çalışma izlenen dosyaların mevcut durumunu işlemekle, silme alacağını

  • git commit -a

      , git add -A, izlenmeyen dosyaları göz ardı etmeyecek ve artık mevcut olmayan dosyaları kaldıracaktır. çalışma dizininin yan güncellemesinden bir taahhüt oluşturmak istiyorsanız, ör. bir anlık görüntü ya da rsync sonucunun çıkarılması.

    Yine ne sormak bir sorun (ve çözelti) ise, o zaman bunu yapmak için yerinde araç bulunmaktadır diğer cevaplar gördüğünüz gibi.

  • 0

    Bu komut, git rm'ye yönlendirilecek olan tüm silinen dosyaların bir listesini verecektir. Böylece tüm dosyalar kaldırılacak. Hiçbir silinen dosyalar bulunduysa, hiçbir şey olacaktır:

    Git 2.0'da

    git ls-files -z -d | xargs -0 --no-run-if-empty git rm

    2

    , git add davranır size çalışma ağacının kaldırıldı yolları görmezden git add --ignore-removal <pathspec> gibi.

    Kaldırma işlemlerini kaydetmek için git add --all <pathspec> kullanabilirsiniz. Çalışma ağacından kaldırdığınız yolları denetlemek için, git status'u çalıştırın.

    İlgili konular