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

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

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

197
задан David Tuite 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
ответ дан Jefromi 25 янв. '11 в 0:26
источник поделиться

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

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

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

Другие вопросы по меткам