Как мне навсегда удалить коммит в git как локальный, так и удаленный? - PullRequest
0 голосов
/ 25 августа 2018

Я случайно обновил неверный коммит на сервере, и когда я сбрасываю его на рабочий коммит, он показывает, что ваш мастер ветки отстает от 1 коммита, используйте git pull для быстрой перемотки вперед, но я не хочу быстрой перемотки вперед. Я просто хочуудалить этот конкретный коммит из удаленного .....

, пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Для начала, как указывал @RomainVALERI, я бы очень осторожно сбросил историю в удаленной ветви, которая используется совместно с другими.Например, если это ветвь dev или master , сбросить историю каким-либо образом не рекомендуется.

Существует два распространенных способаотменить коммит в git.

1.Отменить неудачный коммит (без изменения истории)

Это самый безопасный путь для общих веток, таких как dev , master и т. Д., Поскольку кто-то, возможно, уже вытянулв плохом коммите, который вы сделали.Вы просто создаете новый коммит, который отменяет неверный коммит и нажимаете.

git revert <commit_hash>
git push

Поскольку ваш вопрос говорит мне, что это самый последний коммит (на который указывает HEAD), вы также можете сделать git revert HEAD и нажмите.

2.Сброс старого коммита и принудительное нажатие (переписать историю)

Вы можете выбрать этот маршрут, если вы работаете с веткой.Это может быть функция или bugfix ответвление.Поскольку вы работаете над этим, переписывание истории не будет иметь большого значения.Опять же, я предполагаю, что это самый последний коммит, который вы хотите удалить.Существуют более сложные способы работы со старым коммитом (см .: git rebase )

Как сказал в своем ответе @Rohan, просто сбросьте свой HEAD на коммит до плохого коммитаи принудительное нажатие.

git reset HEAD
git push --force

Обновление 1-

Хостинг-провайдеры (, а именно VSTS, GitHub ) также позволяют администраторам устанавливать политики филиалов, которые нужны всемпридерживаться.Очень распространенная политика для веток dev / master - отключить « force push » по той причине, о которой я упоминал выше.Если это общий репозиторий, есть большая вероятность, что у вас могут не быть привилегии " force push ", и вам придется выбрать маршрут " revert ".

0 голосов
/ 25 августа 2018

Согласно описанию, указанному в посте:

Если это последний коммит в истории, будет работать следующая команда

 git reset HEAD
 git push remote_name branch_name -f

Если это не последний коммит, тогда

Шаг 1: Найдите коммит до коммита, который вы хотите удалить из git log.Шаг 2: Оформить заказ, чтобы совершить git checkout

Надеюсь, он ответит на ваш вопрос.

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