Разрешить конфликты слияния: принудительно перезаписать все файлы

Я сам работаю над репозиторием 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