Usuwanie plików z commitów Git

Używam Git i popełniłem kilka plików używając

git commit -a

Później odkryłem, że plik został omyłkowo dodany do commitu.

Jak mogę usunąć plik z ostatniego commitu?

ATTENTION! Jeśli chcesz tylko usunąć plik z poprzedniego commitu, i zachować go na dysku, przeczytaj juzzlin's answer powyżej.

Jeśli jest to twój ostatni commit i chcesz całkowicie usunąć plik z twojego lokalnego i zdalnego repozytorium, możesz to zrobić:

  1. usunąć plik git rm.
  2. popełnić commit z flagą amend: git commit --amend.

Flaga amend mówi gitowi, aby popełnił ponownie, ale "scalił" (nie w sensie łączenia dwóch gałęzi) ten commit z ostatnim commitem.

Jak stwierdzono w komentarzach, użycie git rm tutaj jest jak użycie samej komendy rm!

Komentarze (5)

Jeśli nie wprowadziłeś zmian na serwerze, możesz użyć

git reset --soft HEAD~1

Spowoduje to zresetowanie wszystkich zmian i powrót do jednego commitu wstecz

Jeśli pchnąłeś swoje zmiany, wykonaj kroki, na które odpowiedział @CharlesB

Komentarze (8)

Usunięcie pliku za pomocą rm spowoduje jego skasowanie!

Zawsze dodajesz do commitu w git, a nie usuwasz, więc w tym przypadku przywróć plik do stanu, w którym znajdował się przed pierwszym commitem (może to być akcja delete 'rm', jeśli plik jest nowy), a następnie ponownie skompiluj, a plik zostanie usunięty.

Aby przywrócić plik do jakiegoś poprzedniego stanu:

    git checkout  <path_to_file>

lub aby przywrócić go do stanu w zdalnym HEAD:

    git checkout origin/master <path_to_file>

następnie zmień commit i powinno się okazać, że plik zniknął z listy (a nie został usunięty z twojego dysku!)

Komentarze (0)