Jak anulować lokalny commit git
Mój problem polega na tym, że zmieniłem plik NP: README, dodałem nową linię ' to dla mojej linii testowej ' i zapisałem Plik, następnie wydałem następujące polecenia
git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README
#
no changes added to commit (use "git add" and/or "git commit -a")
git add README
git commit -a -m 'To add new line to readme'
Nie wcisnąłem kodu na github, teraz chcę anulować ten commit.
Do tego użyłem
git reset --hard HEAD~1
Ale zgubiłem nowo dodaną linię ' to dla mojej linii testowej ' z pliku README. Tak się nie powinno stać. Potrzebuję treści. czy istnieje sposób na zachowanie treści i anulowanie moje lokalne zobowiązanie?
6 answers
Po prostu użyj git reset
bez flagi --hard
:
git reset HEAD~1
PS: w systemach opartych na Uniksie można użyć HEAD^
, co jest równe HEAD~1
. W systemie Windows HEAD^
nie będzie działać, ponieważ ^
sygnalizuje kontynuację linii. Więc twój wiersz polecenia zapyta Cię More?
.
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
2015-07-10 18:42:23
Użyj --soft
zamiast --hard
flagi:
git reset --soft HEAD^
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-08-10 09:24:58
Jeśli jesteś w trakcie zatwierdzania (tzn. już w edytorze), możesz go anulować, usuwając wszystkie wiersze powyżej pierwszego #
. To anuluje commit.
Więc możesz usunąć wszystkie linie tak, że komunikat commit jest pusty, a następnie zapisać plik:
Otrzymasz wiadomość z napisem Aborting commit due to empty commit message.
.
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-06-20 19:59:37
Możesz powiedzieć Gitowi, co ma zrobić z Twoim indeksem (zestawem plików, które staną się następnym zatwierdzeniem) i katalogiem roboczym podczas wykonywania Git reset używając jednego z parametrów:
--soft
: tylko commity zostaną zresetowane, podczas gdy indeks i katalog roboczy nie zostaną zmienione.
--mixed
: spowoduje to zresetowanie indeksu, aby dopasować go do głowy, podczas gdy katalog roboczy nie zostanie dotknięty. Wszystkie zmiany pozostaną w katalogu roboczym i będą wyświetlane jako zmodyfikowane.
--hard
: resetuje się wszystko (commity, index, working directory), aby pasowało do głowy.
W Twoim przypadku, użyłbym git reset --soft
Aby zachować twoje zmodyfikowane zmiany w indeksie i katalogu roboczym. Pamiętaj, aby sprawdzić to , aby uzyskać bardziej szczegółowe wyjaśnienie.
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
2018-05-29 10:22:42
Użyj poniższego polecenia: $ GIT reset HEAD~1 Po tym możesz również przeglądać pliki, które powracają jak poniżej odpowiedź.
Unstaged zmiany po resecie: M application / config / config.php M application / config / database.php
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
2018-05-14 13:25:38
Pierwszą rzeczą, którą powinieneś zrobić, to uzasadnić, czy chcesz zachować lokalne zmiany przed usunięciem Komunikatu o zatwierdzeniu.
Użyj git log
, aby wyświetlić bieżące komunikaty zatwierdzania, a następnie znajdź identyfikator zatwierdzania przed usunięciem, nie tylko ten, który chcesz usunąć.
Jeśli chcesz zachować lokalnie zmienione pliki, po prostu usuń komunikat commit:
git reset --soft commit_id
Jeśli chcesz usunąć wszystkie lokalnie zmienione pliki i komunikat commit:
git reset --hard commit_id
To różnica miękkiego i twardego
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
2018-09-12 03:04:24