2014-10-28 3 views
7

Если я клонирую репозиторий с максимальной глубиной 1 в теге, он работает и просто сбрасывает это. Если я хочу сделать выборку с глубиной 1 или без нее для нового тега, она выполняет некоторую обработку, но тег никогда не появляется под «git tag». Если я поставлю опцию --tags, она загружает весь репозиторий, а не только новую информацию. Я не возражаю, чтобы репозиторий получал больше истории, я просто хочу избежать времени загрузки. Есть ли способ получить новый тег без получения всех тегов из мелкого клонированного хранилища?Git notow fetch нового тега

git clone --branch 1.0 --depth 1 repositoryPath 
git fetch --depth 1 origin tags/1.1 # Does processing but no new tags 
git fetch --tags origin tags/1.1 # Pulls down the rest of the repository and adds all tags 
git fetch --depth 1 --tags origin tags/1.1 # Same as above 

Теперь, я заметил это в документации: «--depth ... Теги для углубленных фиксаций не извлекается.»

Это то, чем я сталкиваюсь? Нет ли способа сделать это, кроме загрузки всех тегов?

ответ

7

Вы можете использовать полный <refspec> формат:

git fetch --depth 1 origin refs/tags/1.1:refs/tags/1.1 

Или, как указано в git-fetch options (под <refspec>):

tag <tag> означает то же самое, как refs/tags/<tag>:refs/tags/<tag>; он запрашивает все, что связано с данным тегом.

Так короткая форма ответа на ваш вопрос будет

git fetch --depth 1 origin tag 1.1 
+0

Удивительный, что сделал это. Я недостаточно читал refspec. Я представлял, что вам просто нужно положить путь, а не удаленный: локальный. Я предполагаю, что запутанная часть - это то, что сработало, потому что в ней что-то было ... Спасибо –