Существующие ответы требуют, чтобы весь удаленный репозиторий был загружен локально.Если у пульта есть много коммитов, которые еще не клонированы локально, это может занять очень много времени.Примером может служить что-то вроде linux-stable репозитория, в котором есть много независимых веток, которые никогда не объединяются.Кто-то, отслеживающий стабильное ядро , может клонировать только одну ветку для этого ядра.Необходимость извлечения всех ветвей для каждого ядра стабильной серии, чтобы увидеть, существует ли фиксация, потребует загрузки гораздо большего количества данных.
Похоже, что нет хорошего способа сделать это без извлечения всего удаленного репо,Возможность есть, основанная на способах работы git fetch-pack
и git send-pack
, но, кажется, нет способа использовать ее желаемым способом.
Перенос ветви в удаленный репозиторий делаетНе загруженные коммиты уже есть у удаленного, и это делается без предварительной загрузки всего удаленного репозитория.При попытке извлечь удаленный коммит не нужно загружать весь удаленный репозиторий, чтобы определить, существует ли запрошенный коммит или нет.
Последний может использоваться для достижения того, о чем просили в некоторых случаях.
git fetch origin <commit ID>
Если на пульте нет этой фиксации, это не удастся.Для этого удаленное хранилище не нужно локально клонировать.Если на пульте есть коммит, то он его получает.Там нет выбора, просто посмотреть, будет ли выборка работать, но ничего не получить.Конечно, если фиксация уже доступна локально, то ничего не нужно извлекать, и это не является дорогостоящей операцией.
В некоторых удаленных репозиториях не допускается то, что не является заголовком ветви или тега.быть запрошеннымВ этом случае это не сработает.