Параметр команды git clone --depth
говорит
--depth <depth>
Create a shallow clone with a history truncated to the specified number of revisions.
A shallow repository has a number of limitations
(you cannot clone or fetch from it, nor push from nor into it),
but is adequate if you are only interested in the recent history of a large project with a long history,
and would want to send in fixes as patches.
Почему мелкие клоны имеют это ограничение? Почему это рабочий процесс только для исправлений?
Для некоторых рабочих процессов проекта мне нужно передать только один последний коммит из одной ветви в кодировщик, а затем дать им возможность push
их (перемотка вперед) разработки на главный сервер. Это частично для обеспечения безопасности, защиты IP и размера репо, а также для уменьшения путаницы, которую большой репо может принести наивному кодеру. Есть ли рабочий процесс git, который позволяет это?
Обновление: на основании ответа Карла Билефельдта git checkout --orphan
должен быть правильным ответом. Но все еще нужно «клонировать» эту ветвь в одиночку новому пользователю и уметь эффективно ее продвигать.
Страница руководства гласит:
git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>] --orphan
Создать новую сиротскую ветвь с именем <new_branch>
, начатую с
<start_point>
и переключитесь на него. Первый коммит, сделанный на этом новом
у ветви не будет родителей и она станет корнем новой истории
полностью отключен от всех других веток и коммитов.
Индекс и рабочее дерево настраиваются так, как если бы вы
запустить git checkout <start_point>
. Это позволяет вам начать новый
история, которая записывает набор путей, подобных <start_point>
легко запускается git commit -a
, чтобы сделать корневой коммит.
Это может быть полезно, когда вы хотите опубликовать дерево из коммита
без разоблачения его полной истории. Вы можете сделать это, чтобы
опубликовать ветку открытого исходного кода проекта, текущее дерево которого
«чистый», но чья полная история содержит частные или иные
обремененные биты кода.
Если вы хотите начать отключенную историю, которая записывает набор
пути, которые полностью отличаются от одного из <start_point>
, то
Вы должны очистить индекс и рабочее дерево сразу после создания
сиротская ветвь, запустив git rm -rf .
с верхнего уровня
рабочее дерево. После этого вы будете готовы подготовить новые файлы,
перезаполнение рабочего дерева, копируя их из другого места,
извлечение тарбола и т. д.
Интересная ссылка VonC на комментарии Junio. Я думаю, что руководство должно обеспечить руководство в этом случае и позволить правильную команду [например, clone <branch> --options
], чтобы извлечь только соответствующую часть репо. Очевидно, что вероятность успеха push
увеличивается благодаря наличию нескольких связанных коммитов и SHA1 в нижней части истории, которые блокируют сопоставление репо.
Обновление Git 1.9.0: заметки о выпуске 14 февраля '14.
«Извлечение из мелко клонированного хранилища раньше было запрещено,
в первую очередь потому, что соответствующие пути
и мы не удосужились поддержать такое использование. Этот релиз пытается
чтобы разрешить перенос объекта из мелко клонированного хранилища в
более контролируемый способ (т.е. получатель становится мелким хранилищем
с усеченной историей). "
Это хорошая новость для мелких клонеров.
Далее - возможно узкое клонирование.