Страницы

Поиск по вопросам

понедельник, 18 марта 2019 г.

Как отменить последний push?

Допустим сделал push, но теперь нужно отменить этот последний пуш из-за ошибки. Как это правильно сделать? Ветка master
P.S. по просьбе выложил ответ от команды git reflog, названия коммитов вымышленные, т.к. на задачу большого значения не влияют
$ git reflog 4e212ca (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: commit: мой последний коммит e12ea6d HEAD@{1}: reset: moving to HEAD^ 132ae6f HEAD@{2}: commit: ещё один коммит e43ea6d HEAD@{3}: commit: ещё один коммит 2234538 HEAD@{4}: pull: Fast-forward 89543c9 HEAD@{5}: commit: fix search


Ответ

Откатывать запушенные на сервер файлы во многих командах не рекомендуется, так как их могли уже забрать с сервера. Также настоятельно рекомендуется сделать резервную копию, скачав всё содержимое папки в какое-либо другое место.
В принципе, если вы работали из командной строки и ещё не успели её закрыть – то можете просто посмотреть, какой коммит был последним:
git commit -m "asdf" [master 6703d65] asdf 1 file changed, 3 insertions(+), 3 deletions(-)
git push Counting objects: 4, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 407 bytes | 407.00 KiB/s, done. Total 4 (delta 2), reused 0 (delta 0) To git.mydomain.tld:folder/repo.git 743acea..6703d65 master -> master
Последняя строчка говорит, что ДО push'а последний коммит был 743acea, а стал 6703d65 - вот и вернитесь к 743acea:
git reset --hard 743acea git push --force
Также если вы закрыли консоль (либо у вас UI в котором не видны действия), но вы уверены, что ничего после push не делали - вам помогут команды:
git reset --hard HEAD~1 git push --force
Вообще же лучше всего прочитать рефлог (git reflog) и откатиться к нужному коммиту через HEAD@{1} (уточните цифру сколько действий нужно отменить именно в вашем случае):
git reset --hard HEAD@{1} git push --force
Открываем reflog:
$ git reflog
6703d65 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: commit: asdf 743acea HEAD@{1}: commit: asdf 1a4e976 HEAD@{2}: commit: something
...
Ваша задача — найти в этом логе тот пункт, к которому вы хотите вернуться:
$ git reset --hard HEAD@{1}

Комментариев нет:

Отправить комментарий