Важно: Если у вас есть какие-либо локальные изменения, они будут потеряны. С или без опции --hard
все локальные коммиты, которые не были переданы, будут потеряны. [*]
Если у вас есть файлы, которые не отслеживаются Git (например, загруженный пользовательский контент), эти файлы не будут затронуты.
Я думаю, что это правильный путь:
git fetch --all
Тогда у вас есть два варианта:
git reset --hard origin/master
ИЛИ Если вы находитесь в другой ветке:
git reset --hard origin/<branch_name>
Пояснение:
git fetch
загружает последние версии с пульта, не пытаясь объединить или переместить что-либо.
Затем git reset
сбрасывает основную ветвь к тому, что вы только что получили. Параметр --hard
изменяет все файлы в рабочем дереве в соответствии с файлами в origin/master
Поддерживать текущие локальные коммиты
[*] : Стоит отметить, что можно сохранить текущие локальные коммиты, создав ветку из master
перед сбросом:
git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master
После этого все старые коммиты будут храниться в new-branch-to-save-current-commits
.
Незавершенные изменения
Незавершенные изменения, однако (даже поэтапные), будут потеряны. Убедитесь, что вы спрятали и передали все, что вам нужно. Для этого вы можете запустить следующее:
git stash
А затем повторно применить эти незафиксированные изменения:
git stash pop