Git: переместите HEAD назад к предыдущему фиксации

Я сделал некоторые изменения в моей мастер-ветке, которые я больше не считаю нужным. Для аргументов, у меня есть хеш фиксации с именем 791fda4e1ac0e1a393e01340bf0fba3f333a73ff , который я бы хотел сделать сейчас, потому что тогда все было стабильно в репо. Я попытался сделать следующее:

git reset 791fda4e1ac 
git reset --soft [email protected]{1} 
git commit -m "Revert to 791fda4e1ac"
git reset --hard 

Тем не менее, когда я делаю git push origin , я отклоняюсь, потому что источник считает, что это не быстрый переход:

 ! [rejected]        master -> master (non-fast-forward)

Каков правильный способ вернуть мой HEAD, чтобы передать хэш 791fda4e1ac и получить там исходный сервер?

5
nl ja de

2 ответы

Он отклоняется, потому что не-быстрая перемотка вперед - он отбрасывает историю, которую другие могут использовать.

Используйте git revert вместо этого, чтобы создать новую фиксацию, которая отменяет эффект существующих.

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

10
добавлено
Что бы выглядела команда git revert в этом случае?
добавлено автор drevicko, источник
@drevicko См. stackoverflow.com/questions/1463340/revert-multiple-git -comm & zwnj; его для различных возможностей. Мне нравится stackoverflow.com/questions/1463340/… лучший.
добавлено автор CletusW, источник

Вы должны сделать принудительное нажатие ( git push -f origin ).

2
добавлено
Git — русскоговорящее сообщество
Git — русскоговорящее сообщество
588 участник(ов)

Обсуждаем git, его фичи, хаки, надстройки и экосистему. Правила: http://telegra.ph/ru-chat-rules-06-19 https://git.wtf/

pro.git::next
pro.git::next
44 участник(ов)

Обсуждение системы контроля версий git и инструментов для работы с ней.