Geçerli hariç tutma desenleri kümesi altında yoksayacak olan dosyaları "kaldırmanın" bir yolu:
(GIT_INDEX_FILE=some-non-existent-file \
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --
Bu, dosyaları çalışma dizininizde bırakır, ancak dizinden kaldırır.
Burada kullanılan hile git ls dosyalarına varolmayan bir dizin dosyası sağlamaktır, böylece izlenen dosya olmadığını düşünür. Yukarıdaki kabuk kodu, dizin boş olsaydı yoksayılacak tüm dosyaları sorar ve git rm ile gerçek dizinden kaldırır.
Dosyalar "izlendikten" sonra, önemli bir şeyin kaldırılmadığını doğrulamak için git durumunu kullanın (bu durumda hariç tutma kalıplarınızı ayarlayın ve kaldırılan dizin girişini geri yüklemek için git reset - yolunu kullanın). Ardından, "kabuğunu" ortadan kaldıran yeni bir taahhütte bulunun.
“Kabuk” hala eski taahhütlerde olacak. Gerçekten temiz bir geçmişe ihtiyacınız varsa eski taahhütlerin temiz sürümlerini üretmek için git filtre-dalını kullanabilirsiniz (git filtre-dalını kullanmak nb "geçmişi yeniden yazacaktır", bu nedenle, çektiğiniz ortak çalışanlarınız varsa hafifçe gerçekleştirilmemelidir. "crud" ilk kez sunulduktan sonra tarihsel taahhütlerinizden herhangi biri).
git rm --cached
tüm dizinleri-r
seçenekle yapabilirsiniz