Git / GitHub kullanarak Dosyaları Silme


115

Öncelikle Git'te yeniyim.

Finder'ı kullanarak Mac'imde yerel olarak bir grup dosyayı sildim. Sildiğim dosyaların artık mevcut dalda gösterilmemesini istiyorum, ama gösteriyorlar.

Herhangi bir Git kullanıcısı dizini güncellemek için bir komut biliyor mu?


Yanıtlar:


226

Bunun istediğini yapmanın daha kolay bir yolu olacağını düşünüyorum:

git add . -A 

O zaman yaparsın:

git commit -m "removed some files"

Yukarıda not edildiği gibi.


Teşekkür ederim. Ve bashyukarıdakileri yapmak için takma ad yazmıştım . İnanılmaz.
Zack

12
-A bayrağı ne işe yarar?
Kim Prince

1
@KimPrince - kernel.org'a göre , "-A --all Like -u, ancak <filepattern> ile dizine ek olarak çalışma ağacındaki dosyalarla eşleşir. Bu, yeni dosyalar bulacağı ve değiştirilmiş içeriği hazırlayacağı anlamına gelir. ve artık çalışma ağacında olmayan dosyaların kaldırılması. "
j08691

3
@KimPrince git help addsize ne -Aanlama geldiğini söyleyecek ve diğer tüm anahtarları da listeleyecektir.
Marcin Orlowski

1
Bu, silinen dosyaları silmekten çok daha fazlasını yapar. Dizinde değiştirilen tüm dosyaları ekler, bu nedenle bu gerçekten tatmin edici bir cevap değildir.
Alex

19

Hala 'izlenen' silinmiş dosyaları şu şekilde görebilirsiniz:

git ls-files --deleted

Dosyaları bir şubeden silmek için aşağıdaki gibi bir şey yapabilirsiniz:

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

Kimden man git-rm:

Dosyaları dizinden veya çalışma ağacından ve dizinden kaldırın. git-rm, bir dosyayı yalnızca çalışma dizininizden kaldırmaz. (Bir dosyayı 13 yalnızca çalışma ağacından kaldırma ve yine de dizinde tutma seçeneği yoktur; bunu yapmak istiyorsanız / bin / rm kullanın.)

Son olarak, "kaldırma" işlemini gerçekleştirmek için aşağıdaki gibi bir şey yapın:

git commit -m "removed some files"

O zaman değişikliği yapmanız gerekir -git commit -m "removed some files"
James Polley

17

Önceki cevaplardan beri bunun git'e eklendi mi bilmiyorum, ama az önce kullandım

git add -u
git commit -m "Removed some files"

aynı şeyi başarmak için.


Bu, listelenen kullanım durumu için işe yarar, ancak bu yalnızca dosyaların silinmesini sağlamaz. Herhangi bir şekilde değiştirilen tüm dosyaları ekler, bu nedenle, yaptığınız tek değişiklik bu olmadıkça, silinen tüm dosyaları kaldırmak için genellikle iyi bir yol değildir.
Alex

2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

Deletefile.name dosyasını kaldırılacak dosyayla değiştirin. Derinlemesine ayrıntılı açıklama için güzel makaleyi inceleyin https://help.github.com/articles/remove-sensitive-data

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.