Копирует ли git clone каждую ветку в удаленном хранилище? - PullRequest
0 голосов
/ 14 января 2019

Копирует ли git clone каждую ветку в удаленном хранилище?

Можно ли запросить его клонировать некоторые ветви, но не другие ветви, как это делает git fetch через аргумент refspec?

1 Ответ

0 голосов
/ 15 января 2019

Помните, что git clone, как и все остальное в Git, на самом деле не так уж сильно касается имен ветвей , а скорее commits . Просто Git (и git clone) нужны имена, чтобы find commits.

Сама команда git clone по существу состоит из:

  • создание нового каталога (или использование существующего, но пустого каталога)
  • работает git init в этом каталоге
  • настройка элементов здесь как необходимо и уместно, включая git remote add для сохранения URL
  • работает git fetch с использованием только что добавленного пульта
  • работает git checkout

Следовательно, вопрос действительно сводится к: Можете ли вы управлять настройкой fetch = для пульта, который добавляет git clone?

Ответ Да, но только в ограниченной степени. Ограничения:

  • --mirror устанавливает для refspec значение +refs/*:refs/*.
  • --bare устанавливает для refspec значения +refs/heads/*:refs/heads/* и +refs/tags/*:refs/tags/*.
  • --single-branch или любая из команд, которые подразумевают это, устанавливают refspec в соответствии с этой операцией.

При отсутствии любого из них вы получаете стандартную ссылку. Следовательно, --single-branch позволяет вам выбрать одну ветвь для клонирования (путем переключения на одну ветку refspec), а --mirror позволяет вам выйти за пределы пространства имен refs/heads/, но, по крайней мере, На сегодняшний день нет аргументов, которые сделают некоторое промежуточное подмножество. Вместо этого вы можете выполнить собственную последовательность команд mkdir / git init / git remote add / git config / git fetch / git checkout, если хотите достичь какого-то особенного результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...