Usunięcie usuniętego pliku w git
Zazwyczaj, aby odrzucić zmiany w pliku, wykonasz:
git checkout -- <file>
Co zrobić, jeśli zmiana, którą chcę odrzucić, to usunięcie pliku? Powyższy wiersz dałby błąd:
error: pathspec '<file>' did not match any file(s) known to git.
Jakie polecenie przywróci ten pojedynczy plik bez cofania innych zmian?
Punkt bonusowy: ponadto, co jeśli zmiana, którą chcę odrzucić, to dodanie pliku? Chciałbym wiedzieć, jak usunąć tę zmianę.
4 answers
Zakładając, że chcesz cofnąć efekty ' git rm 'lub ' rm', po których następuje 'git add-A' lub coś podobnego:
# this restores the file status in the index
git reset -- <file>
# then check out a copy from the index
git checkout -- <file>
Aby cofnąć 'git add', wystarczy pierwsza linijka powyżej, zakładając, że jeszcze się nie zobowiązałeś.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-06 20:46:25
Na oba pytania udzielono odpowiedzi w git status
.
Aby odinstalować Dodawanie nowego pliku użyj git rm --cached filename.ext
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: test
Aby usunąć plik użyj git reset HEAD filename.ext
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: test
Z drugiej strony, git checkout --
nigdy nie odtwarza się, po prostu odrzuca nie-ustawione zmiany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-14 09:59:40
Odpowiedzi na twoje dwa pytania są ze sobą powiązane. Zacznę od drugiego:
Po ustawieniu pliku (często za pomocą git add
, choć niektóre inne polecenia domyślnie ustawiają zmiany, jak git rm
), możesz wycofać tę zmianę za pomocą git reset -- <file>
.
W Twoim przypadku musisz użyć git rm
do usunięcia pliku, co jest równoznaczne z usunięciem go za pomocą rm
, a następnie przesunięciem tej zmiany. Jeśli najpierw usuniesz go za pomocą git reset -- <file>
, możesz go odzyskać za pomocą git checkout -- <file>
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-06 20:38:25
Jeśli plik został zainscenizowany i zatwierdzony, to następujący plik zostanie zresetowany:
git reset COMMIT_HASH file_path
git checkout COMMIT_HASH file_path
git add file_path
To zadziała w przypadku usunięcia, które miało miejsce kilka commitów wcześniej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-10 14:19:06