git fetch с путем вместо удаленного - PullRequest
4 голосов
/ 30 сентября 2010

Я понимаю идею запуска git fetch <remote>, потому что удаленные ветви доступны с git checkout <remote>/<branch>.

Но как это работает, если я просто запускаю

git fetch path/to/other/repo

Как я могу оформить заказ в соответствующих филиалах? Обратите внимание, что операция выполняется без вывода сообщений (даже при --verbose) и что новая ветвь не создается.

edit : просто для ясности: я прекрасно понимаю, как git работает с пультами. Мне просто любопытно по поводу этого альтернативного синтаксиса git fetch path/to/remote или git fetch <url>. Как это должно работать? Почему он не создает новые ветви? Почему он работает тихо, даже в многословном режиме? Что такое предполагаемое использование?

Ответы [ 3 ]

2 голосов
/ 30 сентября 2010

Даже если это «локально» с точки зрения файловой системы, другой репозиторий - это удаленный репозиторий.

Если вы хотите использовать его, сначала добавьте его в качестве удаленного хранилища (даже если URL-адрес является локальным):

git remote add <name> <url>

Затем выполните git fetch (и другие команды) так же, как и с хранилищем на удаленных машинах.

EDIT: Если вы делаете простой git fetch из локального пути, он создает новую псевдо-ветвь с именем FETCH_HEAD. Вы можете проверить это в новой ветке, например, используя:

git checkout -b new_branch FETCH_HEAD
1 голос
/ 30 сентября 2010

Я думаю, что лучшее объяснение (намного лучше, чем документы) - это ответ на другой вопрос от Якуб Наребски .

В основном:

git fetch <path>

просто извлекает ветку HEAD пульта и сохраняет ее локально в FETCH_HEAD.

git fetch <path> <branch>

извлекает ветку в удаленном репо и сохраняет ее в FETCH_HEAD.

Более продвинутые способы использования описаны в ответе Якуба Наребски, но, как он сам заявляет, лучший способ получить это - использовать именованные пульты.

0 голосов
/ 30 сентября 2010

Вы должны явно передать refspec в git fetch, чтобы получить удаленные ветви. git help fetch должно помочь.

...