Как удалить фиксацию, которая была перенесена в удаленный репозиторий с помощью Git

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

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

Ответ 1

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

В примерах используется следующая история фиксации:

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

git log -n 4

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

git rebase -i SHA_ID

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

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

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

git push -f origin master

После этого вы увидите, что ваша фиксация удалена.