Как сделать git fetch и checkout, не создавая удаленную ветку локально?

Вариант использования: у меня есть репозиторий на GitHub, кто-то раздвоил его, добавил новую функцию и инициировал пул-запрос. Я не могу автоматически объединить это, потому что есть некоторые незначительные проблемы, которые я хотел бы сначала исправить.

Это одноразовое действие, мне никогда не понадобится этот удаленный репозиторий, поэтому я не хочу создавать локальную ветку remote.

В основном я хотел бы сделать:

  1. копировать файлы из удаленного репозитория и переписывать мои собственные (без какой-либо информации, связанной с git).
  2. увидеть разницу с моей нынешней головой.
  3. исправить что-то и совершить это.

Как это сделать?

git checkout git://github.com/xxx/xxx.git не работает вообще (ошибка с ошибкой)

git fetch git://github.com/xxx/xxx.git работает, но ничего не обновляет

Ответ 1

Вы хотите использовать FETCH_HEAD.

всякий раз, когда вы запускаете git fetch ..., создается магическая ссылка FETCH_HEAD.

Попробуйте, например:

git fetch git://github.com/xxx/xxx.git branch_name && git merge FETCH_HEAD

Ответ 2

Для любого сервера Git:

git fetch git://host.com/path/to/repo.git remote-branch-name:local-branch-name
git checkout local-branch-name

Ответ 3

Другой аккуратный метод (по крайней мере, в/из Github) выбирается следующим образом:

git fetch repo pull/7324/head:pr-7324

Где:

repo указывает на дистанционное репо, например. git://github.com/xxx/xxx.git.

pull/7324/head - это запрос удаленного pull.

pr-7324 - локальная ветвь запроса запроса.

Затем вы можете использовать локальную ветвь PR, чтобы делать с ней что угодно.

Источник: адаптирован из это обсуждение.