Якуб уже упоминал, что мелкий клон выбранных ветвей возможен , но довольно сложен для выполнения.
И добавил:
Примечаниетем не менее, поскольку ветви обычно делят большую часть своей истории, выгода от клонирования только подмножества ветвей может быть меньше, чем вы думаете.
Я бы добавил, что у вас не должно быть никакого инструмента VCS вФорма производства (вы устанавливаете / отслеживаете только то, что необходимо для производства до прогона ).
Таким образом, git archive
остается лучшим способом извлечь то, что вам нужно, какархив (zip
или tar
, формат, который вы можете затем использовать без Git, после передачи на производственную сторону)
Обновление, март 2012 г .:
предстоящее git1.7.10 (апрель 2012) фактически позволит вам клонировать только одну ветку:
git clone --single-branch
Вы можете увидеть это в t5500-fetch-pack.sh
:
test_expect_success 'single branch clone' '
git clone --single-branch "file://$(pwd)/." singlebranch
'
Эта функция была затем исправлена с помощью:
clone --single
: ограничить выборку refspec для извлеченной ветви
После запуска "git clone --single
", в результирующем репозитории установлена обычная стандартная ссылка" +refs/heads/*:refs/remotes/origin/*
"для извлечения ссылки, что означает, что последующее" git fetch
"в конечном итоге захватит все остальные ветви.
Обновите ссылку для извлечения ссылкивместо этого, чтобы исправить только один клонированный реф, чтобы исправить это.
builtin / clone.c: правильно определить клон, начинающийся с тега
31b808a (clone --single
:ограничить выборку refspec для fetched branch, 2012-09-20) пытался определить, является ли данная «ветвь», которой следует следовать, на самом деле тегом в удаленном репозитории, проверив «refs/tags/
», но он неправильно использовал strstr(3)
;активно неправильно трактовать «ветку» «refs/heads/refs/tags/foo
» и использовать логику для «1074 *» иерархии ссылок.
Что действительно хотел сделать код, так это посмотреть, начинается ли он с «refs/tags/
".
Обновление сентября 2016: git clone --single-branch --branch tag
будет работать для связанных тегов в Git 2.11+ (4 квартал 2016 года).