Устранение конфликтов с использованием удаленных изменений при удалении с Git remote

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

Итак, есть ли способ заставить Git перезаписать любую версию в GitHub, а не беспокоить меня о конфликтах?

197
задан 24 янв. '11 в 20:36
источник поделиться
2 ответов

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

# fetch from the default remote, origin
git fetch
# reset your current branch (master) to origin master
git reset --hard origin/master

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

Если, с другой стороны, вы хотите сохранить эти коммиты и заставить их выглядеть так, как если бы вы слились с источником, и заставить слияние поддерживать версии только с начала, вы можете использовать стратегию слияния ours:

# fetch from the default remote, origin
git fetch
# create a branch at your current master
git branch old-master
# reset to origin master
git reset --hard origin/master
# merge your old master, keeping "our" (origin/master's) content
git merge -s ours old-master
337
ответ дан 25 янв. '11 в 0:26
источник

Вы можете использовать ответ из дублированной ссылки, указанной nvm.

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

git pull -s recursive -X theirs
76
ответ дан 24 янв. '11 в 21:03
источник

Другие вопросы по меткам или Задайте вопрос