Я установил удаленное непонятное «основное» репо и клонировал его на свой компьютер. Я сделал некоторые локальные изменения, обновил свой локальный репозиторий и перенес изменения в мое удаленное хранилище. Все было хорошо до этого момента.
Теперь мне пришлось что-то менять в удаленном репо. Затем я изменил что-то в своем локальном репо. Я понял, что смена удаленного репо не нужна. Поэтому я попытался перейти git push
от локального репо к удаленному репо, но я получил ошибку вроде:
Чтобы предотвратить потерю истории, обновления без ускоренной пересылки были отклонены. Объедините удаленные изменения перед повторным нажатием. См. Раздел «Примечание о быстрой перемотке»
git push --help
.
Я думал, что, вероятно,
git push --force
вынудит мою локальную копию отправить изменения в удаленную и сделать то же самое. Это действительно вызывает обновление , но когда я возвращаюсь к удаленному репо и выполняю коммит, я замечаю, что файлы содержат устаревшие изменения (те, которые ранее были у основного удаленного репо).
Как я уже упоминал в комментариях к одному из ответов :
[Я] попытался форсировать, но когда возвращаюсь на главный сервер, чтобы сохранить изменения, я получаю устаревшую постановку. Таким образом, когда я фиксирую репозитории, они не совпадают. И когда я пытаюсь использовать git push снова, я получаю ту же ошибку.
Как я могу исправить эту проблему?
git push --force
это действительно еще один действительный способ принудительного нажатия, и он будет выдвигать ветви так же, как и в git push origin master --force
Git по умолчанию push.default config settings
, хотя, какие ветви специально выдвигаются, отличается между версиями Git до 2.0 и после 2.0.
git push --force
отлично работает в наши дни, FWIW ...
git push --force-with-lease
работает даже лучше :), он откажется обновлять ветку, если это не то состояние, которое вы ожидаете. (см. developer.atlassian.com/blog/2015/04/force-with-lease )
git push -force
более осторожно .