Как удалить самый последний коммит на github - PullRequest
0 голосов
/ 31 января 2019

Я попытался выполнить перебазирование в соответствии с этими инструкциями ( Как я могу удалить коммит на GitHub? ), и, похоже, ничего не изменилось.

На компьютере A, моей рабочей системе,У меня была самая последняя версия моего кода.Я перенес его в репозиторий и пришел домой.

Здесь, с компьютером Б, дома, последний раз, когда я обновлял код, было несколько месяцев назад.Видимо, я сделал изменение или два назад в день (ничего важного) и, таким образом, возникли конфликты слияния.Использовал рабочий стол github для «выборки» и попытался объединить;Из-за того, что я не понимал, как работает слияние, я что-то напортачил (оказалось, что слияние не включало много необходимых файлов) ... но я не знал об этом, пока не стало слишком поздно.Затем я попытался выполнить еще одну загрузку / извлечение на рабочем столе github, чтобы все было синхронизировано, и у меня не было бы этой проблемы снова после работы из моей домашней системы.

Затем я понял, что мне не хватает файлов и других файловбыли старые / испорченные.

На Github, если я посмотрю историю коммитов ... правильные файлы - это один коммит назад.

Все, что я хочу сделать, это уничтожить мой текущий локальныйrepo (у которого нет ни одного из текущих, хороших файлов в любом случае) и скажите github удалить самый последний коммит.Затем я клонирую и начинаю заново в домашней системе.

Но я не могу найти способ удалить коммит на github.

РЕДАКТИРОВАТЬ: Учитывая, что @Alex Harvey настаивал на том, что связанные инструкции работают, я вернулся к ссылке.Не имея удачи с первым ответом (ничего в локальном репо не изменилось), я выбрал другой вариант, который имеет более 800 голосов.Я использовал команду: git push -f origin HEAD^:master

К сожалению, это удалило около 100 самых последних коммитов из моего репозитория github .Похоже, что он удалял каждый коммит на github с момента последней синхронизации моего домашнего компьютера с репозиторием github - много месяцев назад.

Help?

EDIT2: Для ясности, система, которую яЯ не был использован или синхронизирован с репозиторием GitHub в течение нескольких месяцев.Единственный коммит локально за последние несколько месяцев был коммитом 'слияния', который я сделал, что положило начало всему этому беспорядку.Я подозреваю, что возвращение одного коммита и затем принудительное нажатие привело к тому, что репозиторий github вернулся назад во времени к тому, как эта система выглядела несколько месяцев назад.

EDIT3: я пошел в рабочую систему и выполнил "git push origin master --force" и восстановил свою работу.

1 Ответ

0 голосов
/ 31 января 2019

Если вы действительно хотите удалить HEAD (последний) коммит на ветке в GitHub, то вы можете сделать это:

git checkout your_branch
git reset --hard HEAD~1
git push --force origin your_branch

Однако (курсивом, возможно, даже недостаточно внимания)), большую часть времени вы не хотите использовать эту опцию.Причина в том, что удаление фиксации HEAD и последующее принудительное нажатие переписывает общедоступную историю your_branch.Это, в свою очередь, может вызвать проблемы у всех, кто также разделяет эту ветку.

Если вы были уверены, что используете эту ветку только вы, тогда может быть оправдан жесткий сброс.В противном случае я рекомендую использовать git revert:

git revert HEAD

Это фактически добавит новый коммит поверх your_branch, который функционально отменит предыдущий коммит HEAD.Эта опция безопасна, даже если ветвь будет общей для нескольких человек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...