2011-06-10 3 views
12

Удаленный репозиторий содержит плохую версию. У меня есть копия хорошей версии локально. Я хочу заменить все, что находится в удаленном репозитории, на мой текущий репозиторий (в удаленном репозитории есть еще несколько коммитов (включая слияние), которые не должны были произойти).Переопределение удаленного репозитория git с моим репозиторием

Если я пытаюсь нажать, это говорит мне, что мне нужно сначала вытащить, но я не хочу этого делать, потому что это испортит мою локальную версию. Я хочу, чтобы удаленное репо содержало то, что у меня локально.

Как я могу это сделать?

ответ

41

Использование --force, Luke.

http://www.kernel.org/pub/software/scm/git/docs/git-push.html

+0

То же самое: '! [remote reject] master -> master (non-fast-forward) ' – rid

+1

Затем вам нужно отключить' receive.denyNonFastForwards' в репозитории удаленного сервера .git/config, если он отказывается от него даже при указании '--force'. – Amber

+0

Какая именно команда вы используете? – Amber

1
  1. Сделать новую локальную ветку с вашей известной хорошей версии
  2. Прицепные
  3. Переключение в известной плохой ветви
  4. Полностью объедините удачную ветвь в известной плохой отрасли
  5. Commit and push

Обычно я использую такой процесс, чтобы сохранить то, что изменилось, иметь изолированную ветвь, известную хорошую копию и т. Д. Это, вероятно, чрезмерно по сравнению с использованием --force, но я предпочитаю это.

+2

«Слияние» не работает, потому что хорошие изменения старше неправильных изменений, поэтому ничего не слияние. – rid

Смежные вопросы