Страницы

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

четверг, 9 января 2020 г.

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

#git


Допустим сделал 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 

    


Ответы

Ответ 1



Откатывать запушенные на сервер файлы во многих командах не рекомендуется, так как их могли уже забрать с сервера. Также настоятельно рекомендуется сделать резервную копию, скачав всё содержимое папки в какое-либо другое место. В принципе, если вы работали из командной строки и ещё не успели её закрыть – то можете просто посмотреть, какой коммит был последним: 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}

Ответ 2



Если мне не изменяет память, то сносим текущий коммит git reset --hard HEAD~1 и затем пушим заново git push origin HEAD --forceИли как вариант зайти туда, где запушили, и там снести последний коммит. Я вторым способом пользовался лично

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

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