Git заменить локальную версию с удаленной версией - PullRequest
127 голосов
/ 13 марта 2011

Как я могу сказать git игнорировать мой локальный файл и взять его из удаленной ветви, не пытаясь объединить и вызвать конфликты?

Ответы [ 5 ]

143 голосов
/ 13 марта 2011

Это самое безопасное решение:

git stash

Теперь вы можете делать все, что хотите, не боясь конфликтов.

Например:

git checkout origin/master

Если вы хотите включить удаленные изменения в основную ветку, вы можете сделать:

git reset --hard origin/master

Это заставит вас перейти "master", чтобы указать на "origin / master".

41 голосов
/ 14 марта 2011

Я понимаю вопрос так: вы хотите полностью заменить содержимое одного файла (или выборки) из апстрима.Вы не хотите напрямую влиять на индекс (так что вы должны пройти через add + commit как обычно).

Просто выполните

git checkout remote/branch -- a/file b/another/file

Если вы хотите сделать это для расширенных поддеревьев ивместо этого, если вы хотите напрямую воздействовать на индекс, используйте

git read-tree remote/branch:subdir/

Затем вы можете (необязательно) обновить свою рабочую копию, выполнив

git checkout-index -u --force
8 голосов
/ 01 декабря 2015

Насколько я понимаю, вы, например, ошибочно сохранили файл, который вы обновили, только для целей тестирования. Затем, когда вы запускаете «git status», файл отображается как «Modified», и вы произносите несколько плохих слов. Вы просто хотите вернуть старую версию и продолжать работать в обычном режиме.

В этом сценарии вы можете просто выполнить следующую команду:

git checkout -- path/filename
5 голосов
/ 19 февраля 2018

Я бы извлек удаленный файл из "master" (удаленного / исходного хранилища) следующим образом:

git checkout master <FileWithPath>

Пример: основные компоненты git checkout / indexTest.html

4 голосов
/ 07 декабря 2013

Используйте параметр -s или --strategy в сочетании с параметром -X. В вашем конкретном вопросе вы хотите сохранить все удаленные файлы и заменить локальные файлы с тем же именем.

Заменить конфликты с удаленной версией

git merge -s recursive -Xtheirs upstream/master  

будет использовать версию удаленного репо всех конфликтующих файлов.

Заменить конфликты локальной версией

git merge -s recursive -Xours upstream/master

будет использовать локальную версию репо всех конфликтующих файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...