Было бы полезно, если бы вы могли предоставить более подробную информацию. Вы хотите перенести содержимое всех файлов из удаленной ветки или только некоторые из файлов (т.е. сохранить некоторые локальные версии / изменения)? У вас есть какая-нибудь местная история, которую вы хотите сохранить? (Это может быть важно, если есть какие-либо другие ветки или репозитории, которые уже включили вашу локальную историю.) Если вы хотите сохранить свою локальную историю, что вы планируете делать с ней позже? (Вы можете оставить тег, указывающий на локальную историю, и просто сбросить свою ветку до того, что есть у пульта, или вы можете захотеть «объединить их»).
Возможно, стоит отметить, что это отсоединит HEAD - спрашивающий может предпочесть остаться на ветке сgit stash; git fetch origin; git reset --hard origin/master
Mark Longair
10
Я думаю, что комментарий Марка Лонгаира является актуальным ответом на этот вопрос
это был самый полезный ответ для меня +1
Andres
Как вернуться в состояние до git stash? git stash listпусто.
Лев
Я хочу обнять тебя
Угур Каздал
45
Я понимаю вопрос как этот: вы хотите полностью заменить содержимое одного файла (или выделения) из апстрима. Вы не хотите напрямую влиять на индекс (поэтому вы должны пройти через add + commit как обычно).
Насколько я понимаю, например, вы неправильно сохранили файл, который вы обновили, только для тестирования. Затем, когда вы запускаете «git status», файл отображается как «Modified», и вы произносите несколько плохих слов. Вы просто хотите вернуть старую версию и продолжать работать в обычном режиме.
В этом случае вы можете просто запустить следующую команду:
У меня сработало вот так "git checkout remotes / origin / master <my-file>"
saravanakumar
4
Используйте опцию -sили в --strategyсочетании с -Xопцией. В вашем конкретном вопросе вы хотите сохранить все удаленные файлы и заменить локальные файлы с тем же именем.
Заменить конфликты с удаленной версией
git merge -s recursive -Xtheirs upstream/master
будет использовать версию удаленного репо всех конфликтующих файлов.
Заменить конфликты локальной версией
git merge -s recursive -Xours upstream/master
будет использовать локальную версию репо всех конфликтующих файлов.
git merge -s their
.Ответы:
Это самое безопасное решение:
Теперь вы можете делать все, что хотите, не боясь конфликтов.
Например:
Если вы хотите включить удаленные изменения в основную ветку, вы можете сделать:
Это заставит вас перейти "master", чтобы указать на "origin / master".
источник
git stash; git fetch origin; git reset --hard origin/master
git stash
?git stash list
пусто.Я понимаю вопрос как этот: вы хотите полностью заменить содержимое одного файла (или выделения) из апстрима. Вы не хотите напрямую влиять на индекс (поэтому вы должны пройти через add + commit как обычно).
Просто делай
Если вы хотите сделать это для обширных поддеревьев и вместо этого хотите напрямую воздействовать на индекс, используйте
Затем вы можете (необязательно) обновить свою рабочую копию, выполнив
источник
Насколько я понимаю, например, вы неправильно сохранили файл, который вы обновили, только для тестирования. Затем, когда вы запускаете «git status», файл отображается как «Modified», и вы произносите несколько плохих слов. Вы просто хотите вернуть старую версию и продолжать работать в обычном режиме.
В этом случае вы можете просто запустить следующую команду:
источник
Я бы извлек удаленный файл из «master» (репозиторий remote / origin) следующим образом:
Пример: основные компоненты git checkout / indexTest.html
источник
Используйте опцию
-s
или в--strategy
сочетании с-X
опцией. В вашем конкретном вопросе вы хотите сохранить все удаленные файлы и заменить локальные файлы с тем же именем.Заменить конфликты с удаленной версией
будет использовать версию удаленного репо всех конфликтующих файлов.
Заменить конфликты локальной версией
будет использовать локальную версию репо всех конфликтующих файлов.
источник