Как я могу сказать git игнорировать мой локальный файл и перенести его из моей удаленной ветки, не пытаясь объединить и вызвать конфликты?
Git заменить локальную версию на удаленную версию
Ответ 1
Это безопасное решение:
git stash
Теперь вы можете делать все, что хотите, не боясь конфликтов.
Например:
git checkout origin/master
Если вы хотите включить удаленные изменения в ведущую ветку, вы можете сделать:
git reset --hard origin/master
Это приведет к тому, что вы разветките "master", чтобы указать "origin/master".
Ответ 2
Я понимаю вопрос как это: вы хотите полностью заменить содержимое одного файла (или выбора) из восходящего потока. Вы не хотите напрямую влиять на индекс (так что вы могли бы выполнить добавление + фиксацию, как обычно).
Просто сделайте
git checkout remote/branch -- a/file b/another/file
Если вы хотите сделать это для обширных поддеревьев и вместо этого хотите напрямую влиять на индекс, используйте
git read-tree remote/branch:subdir/
Затем вы можете (необязательно) обновить рабочую копию, выполнив
git checkout-index -u --force
Ответ 3
Я понимаю, что, например, вы неправильно сохранили файл, который вы обновили только для целей тестирования. Затем, когда вы запускаете "git status", файл отображается как "Изменено", и вы говорите несколько плохих слов. Вы просто хотите вернуть прежнюю версию и продолжать работать нормально.
В этом сценарии вы можете просто запустить следующую команду:
git checkout -- path/filename
Ответ 4
Используйте параметр -s
или --strategy
в сочетании с опцией -X
. В вашем конкретном вопросе вы хотите сохранить все удаленные файлы и заменить локальные файлы с тем же именем.
Заменить конфликты с удаленной версией
git merge -s recursive -Xtheirs upstream/master
будет использовать версию удаленного репо всех конфликтующих файлов.
Заменить конфликты с локальной версией
git merge -s recursive -Xours upstream/master
будет использовать локальную версию репо всех конфликтующих файлов.