agent10
@agent10
Software Engineer

Можно ли склонировать git репозиторий по sha1(хэшу коммита)?

В проекте строим билды через Хадсон.
Для получения кода делаем git clone
Хочется строить билды для конкретной ветки и коммита.
Проблема в том, что для имени ветки всё работает хорошо, т.е:
git clone our_repo/repo_name.git -b master_Branch_Name
Но если вместо имени ветки поставить хэш, скажем:
git clone our_repo/repo_name.git -b c0ff7a5663a73790746a084b023c3f75ec6b0465
Получаем fatal: Remote branch c0ff7a5663a73790746a084b023c3f75ec6b0465 not found in upstream origin

Да можно, конечно, сначала
git clone our_repo/repo_name.git
...
git checkout c0ff7a5663a73790746a084b023c3f75ec6b0465

Но может есть решение в одну строчку?
Или почему не работает git clone -b?
  • Вопрос задан
  • 762 просмотра
Пригласить эксперта
Ответы на вопрос 3
agent10
@agent10 Автор вопроса
Software Engineer
Вроде кое-что нашёл. Нельзя это делать по причине безопасности.
Подробнее тут:
git.661346.n2.nabble.com/Fetch-by-SHA-missing-td56...
и тут:
thread.gmane.org/gmane.comp.version-control.git/73...
Ответ написан
Комментировать
Я бы посоветовал пользоваться тегами в данном случае, всем станет жить легче:

git tag -a v0.0.7 -m "Tagged version 0.0.7"
git push --follow-tags


git clone repo -b v0.0.7

В документации ни слова о том, что этот флаг может принимать sha1
Ответ написан
потому что
-b
Instead of pointing the newly created HEAD to the branch pointed to by the cloned repository’s HEAD, point to branch instead. In a non-bare repository, this is the branch that will be checked out. --branch can also take tags and detaches the HEAD at that commit in the resulting repository.

юзайте теги, да и в целом, чем плохо в 2 строки?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы