Синхронизация локального репозитория git с удаленным удалением с удалением локальных изменений/коммитов
Я не эксперт git, поэтому это может показаться глупым вопросом.
У меня есть локальные и удаленные репозитории, я хочу синхронизировать свой локальный с удаленным репозиторием. У меня много локальных изменений, спрятанные изменения и несколько коммитов, которые еще не нажаты на удаленный.
Одним из способов может быть удаление всех локальных изменений (с помощью git clean
), отмена фиксации и fetch/pull
с удаленного. Но я думаю, что должна быть какая-то одна команда, которая может сделать все это за один раз. Я попытался использовать git reset --hard HEAD
, а затем git pull
, но это дало мне:
# Your branch and 'origin/master' have diverged,
# and have 1 and 9 different commits each, respectively.
Смотрел этот вопрос, но не помог.
Ответы
Ответ 1
Как прокомментировано, git reset --hard origin/master
будет reset ваш master
для восходящего потока.
Но: ваш текущий хозяин (с его локальным фиксацией) будет "потерян" (по крайней мере, больше не видно).
Итак, один шаг - не лучший подход.
Я бы рекомендовал что-то вроде:
git checkout master
git fetch origin
git branch tmp
git reset --hard origin/master
git checkout tmp
git rebase master
git checkout master
git merge tmp
git branch -d tmp
Таким образом, вы обновляете свои локальные фиксации поверх обновленного основного
x--x--x--x--x (master, origin/master) x--x--x--x--x--y'--y' (tmp, master)
\ =>
y--y (tmp) (after rebase+merge)
Ответ 2
git fetch -[options]
Checkout:
git fetch --help
для функций, которые вы можете использовать