Как удалить коммит, который был передан в удаленный репозиторий с помощью Git - PullRequest
12 голосов
/ 16 марта 2012

Я отправил пару коммитов в удаленный репозиторий и обнаружил, что они создают проблемы.

Как я могу вернуться к предыдущей версии?То есть удаление двух последних коммитов?

Ответы [ 3 ]

32 голосов
/ 16 марта 2012

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

Примеры используют следующую историю коммитов:

e512d38 Adding taunts to management.
bd89039 Adding kill switch in case I'm fired.
da8af4d Adding performance optimizations to master loop.
db0c012 Fixing bug in the doohickey

Если вы просто хотите отменить коммиты без изменения истории, вы можете сделать следующее:

git revert e512d38
git revert bd89039

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

git reset --hard da8af4d
git push origin -f localBranch:remoteBranch

где localBranch - имя локальной ветви, а remoteBranch - имя удаленной ветви.

5 голосов
/ 16 марта 2012

Я думаю, что вы можете выполнить откат локально и выдать результат:

$ git reset HEAD^ --hard
$ git push REMOTE -f

Где 'REMOTE' - имя удаленного.

1 голос
/ 20 февраля 2017

Прежде всего введите эту команду.

git log -n 4

Эта команда отобразит ваши последние 4 коммита с их SHA. После этого введите следующую команду.

git rebase -i SHA_ID

Вместо SHA_ID введите SHA коммита до коммита, который вы хотите удалить.

После этого откроется файл, в верхней части которого вы увидите SHA и сообщение о коммите, который вы хотите удалить. Удалите эту строку, сохраните и выйдите из файла.

Когда вы сделали это, вы должны сделать толчок. Поэтому введите следующую команду.

git push -f origin master

Когда вы закончите с этим, вы увидите, что ваш коммит удален.

...