Нажимать изменения без натяжения - программирование
Подтвердить что ты не робот

Нажимать изменения без натяжения

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

git reset --hard COMMIT-HASH

Но теперь это не позволит мне толкать, не вытаскивая сначала, что, конечно же, побеждает цель. Я пробовал:

git push -f

Какие ошибки вызывают:

Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To [email protected]:/yyy.git
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:/yyy.git'

Итак, как я могу получить новую, правильную версию ветки на удаленном компьютере?

4b9b3361

Ответ 1

На странице git config man:

receive.denyNonFastForwards

Если установлено значение true, git -receive-pack будет отклонять обновление ref, которое не является быстрым. Используйте это, чтобы предотвратить такое обновление через push, даже если это нажатие принудительно. Эта переменная конфигурации устанавливается при инициализации общего репозитория.

Сервер, на который вы пытаетесь нажать, включил этот параметр. Итак, короткий ответ: в этом случае вы не сможете git push --force.


Чтобы получить правильную версию ветки на удаленном компьютере, вам нужно будет сделать новую фиксацию на кончике ветки, которая вернет ее в правильное состояние. Если в настоящий момент вы выполняете фиксацию для правильного состояния, вы можете запустить следующее:

$ git reset --soft <remote>/<branch>    # point the ref back to the remote, but
                                        #   keep the index and working tree

$ git commit                            # make the 'correction' commit
$ git push

Ответ 2

Не разрешает ли ваш сервер немедленное переключение вперед?

git файл конфигурации

[receive]
denyNonFastforwards = true

Ответ 3

Лучший способ отменить изменения в git - это команда git revert.

Чтобы отменить последнее коммит: git revert HEAD^

он отменяет изменения, сделанные в последнем коммите, а затем создает новую фиксацию поверх нее.

Надеюсь, это поможет кому-то.