Разрешение конфликтов с помощью удаленных изменений при извлечении из Git remote - PullRequest
259 голосов
/ 24 января 2011

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

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

Ответы [ 2 ]

434 голосов
/ 25 января 2011

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

# fetch from the default remote, origin
git fetch
# reset your current branch (master) to origin's 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's master
git reset --hard origin/master
# merge your old master, keeping "our" (origin/master's) content
git merge -s ours old-master
113 голосов
/ 24 января 2011

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

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

git pull -s recursive -X theirs
...