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?

Zack
źródło
Zobacz także stackoverflow.com/questions/492558/…
Petr Gladkikh

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.

Samuel Mikel Bowles
źródło
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"
miku
źródło
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.

Gareth
źródło
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

Chawathe Vipul S.
źródło