Usuwanie plików za pomocą Git / GitHub


115

Po pierwsze, jestem nowy w Git.

Usunąłem kilka plików lokalnie na moim Macu za pomocą Findera. Chcę, aby pliki, które usunąłem, nie były już wyświetlane w bieżącej gałęzi, ale tak się dzieje.

Czy użytkownicy Gita znają polecenie aktualizacji indeksu?


Odpowiedzi:


226

Myślę, że byłby to prostszy sposób robienia tego, co chcesz:

git add . -A 

Wtedy po prostu zrobiłbyś:

git commit -m "removed some files"

Jak wspomniano wyżej.


Dziękuję Ci. Właśnie napisałem alias, bashaby wykonać powyższe. Niesamowity.
Zack

12
Co robi flaga -A?
Kim Prince

1
@KimPrince - zgodnie z kernel.org , "-A --all Jak -u, ale dopasowuje <filepattern> do plików w drzewie roboczym oprócz indeksu. Oznacza to, że znajdzie nowe pliki, jak również pomieści zmodyfikowaną zawartość i usuwanie plików, których nie ma już w drzewie roboczym. "
j08691

3
@KimPrince git help addpowie Ci, co -Aoznacza i wyświetli również wszystkie inne przełączniki.
Marcin Orłowski

1
To znacznie więcej niż tylko usuwanie usuniętych plików. Dodaje wszystkie pliki, które są zmieniane w katalogu, więc nie jest to naprawdę satysfakcjonująca odpowiedź.
Alex

19

Możesz zobaczyć usunięte pliki, które nadal są „śledzone” za pomocą:

git ls-files --deleted

Aby usunąć pliki z gałęzi, możesz zrobić coś takiego:

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

Od man git-rm:

Usuń pliki z indeksu lub z drzewa roboczego i indeksu. git-rm nie usunie pliku tylko z katalogu roboczego. (Nie ma opcji usunięcia pliku 13 tylko z drzewa roboczego, a mimo to zachowania go w indeksie; użyj / bin / rm, jeśli chcesz to zrobić.)

Na koniec, aby zatwierdzić „usunięcie”, wykonaj coś takiego:

git commit -m "removed some files"

Następnie musisz zatwierdzić zmianę -git commit -m "removed some files"
James Polley

17

Nie wiem, czy zostało to dodane do gita od czasu poprzednich odpowiedzi, ale właśnie użyłem

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

osiągnąć to samo.


Działa to w podanym przypadku użycia, ale to nie tylko powoduje usunięcie plików. Dodaje wszystkie pliki, które zostały w jakikolwiek sposób zmienione, więc generalnie nie jest to dobry sposób na usunięcie wszystkich usuniętych plików, chyba że są to jedyne wprowadzone zmiany.
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

Zastąp deletefile.name plikiem do usunięcia. Aby uzyskać szczegółowe, szczegółowe wyjaśnienia, przejdź do fajnego artykułu https://help.github.com/articles/remove-sensitive-data

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.