#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Или как вариант зайти туда, где запушили, и там снести последний коммит. Я вторым способом пользовался лично
Комментариев нет:
Отправить комментарий