Разрешить конфликты слияния: принудительно перезаписать все файлы
Я сам работаю над репозиторием git (так что да, я знаю последствия и предупреждения об этом), и каким-то образом один из деревьев получил фиксацию после нажатия, когда она не должна быть.
Теперь я пытаюсь отступить, и он жалуется на сотни конфликтов слияния.
Есть ли способ сообщить git принудительно перезаписать все локальные файлы, которые поступают с удаленного сервера? Есть ли более быстрый способ, чем выполнение git reset --hard HEAD~1
, а затем выполнение pull?
В том же примечании, есть ли способ сделать то же самое с простым слиянием? Все, что я видел, предлагает проверить каждый файл во время этапа разрешения конфликта слияния, но с сотнями файлов его просто невозможно сделать вручную.
Ответы
Ответ 1
Существует три простых решения для копирования последней версии, находящейся в удаленном репозитории, отбрасывая все изменения, которые вы сделали локально:
-
Сбросьте свой репозиторий и повторите клонирование. Это самое простое решение, но если ваш репозиторий большой, это может занять много времени и может потребовать дополнительных усилий, таких как re configure
ing и т.д.
-
Отмените локальные изменения с помощью git reset --hard <hash>
, а затем выполните git pull
. Проблема в том, что вам нужно сначала найти фиксацию, которая предшествует любой истории изменений, которую вы пытаетесь избежать. После сброса на этот хэш хеширования выполните git pull
.
-
Сделайте git fetch
, чтобы принести обновления к вашей локальной ссылке удаленной ветки (обычно исходной/основной), а затем выполните git reset --hard
, передав эту ссылку, т.е. git reset --hard origin/master
.
Ответ 2
git reset --hard {remote_repository_name}/{branch_name}
Пример:
git reset --hard upstream/branch1
Если вы работаете с веткой, вы можете использовать приведенный выше код. Но до этого вам нужно установить (восходящий или исходный) в локальный репозиторий,
git remote add upstream https://github.com/lakini/example.git
здесь https://github.com/lakini/example.git - это удаленный восходящий репозиторий.
То же самое, что и мы, мы можем работать и в удаленном репозитории (происхождение).
git reset --hard origin/branch1