ПРИМІТКА: Мій приклад не допомагає клонувати за допомогою хешу коміту, але допоможе клонувати тег і мати полегшений репозиторій.
Якщо вам потрібно мати лише один коміт у вашому "клоні", і ви збираєтеся використовувати хеш коміту, коротка відповідь - НІ .
Я використовую цю конструкцію команди (перевірена на v2.13.2.windows.1 ) для тегів:
git clone --depth 1 git@github.com:VENDOR/REPO.git --branch 1.23.0 --single-branch
Повний приклад:
$ git clone --depth 1 git@github.com:Seldaek/monolog.git --branch 1.23.0 --single-branch
Cloning into 'monolog'...
remote: Counting objects: 201, done.
remote: Compressing objects: 100% (188/188), done.
remote: Total 201 (delta 42), reused 32 (delta 5), pack-reused 0
Receiving objects: 100% (201/201), 190.30 KiB | 0 bytes/s, done.
Resolving deltas: 100% (42/42), done.
Note: checking out 'fd8c787753b3a2ad11bc60c063cff1358a32a3b4'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
$ cd monolog
.git
розмір папки ( 267 тис. проти 2,6 млн. при використанні повного clone
):
$ du -h --max-depth=0 .git
267K .git
Я хотів би позначити, --branch
може взяти тег / гілку.
https://git-scm.com/docs/git-clone#git-clone---branchltnamegt
--branch
також може взяти теги та від'єднати HEAD при цьому фіксації в отриманому сховищі.
UPD
У двох словах, це може зайняти "реф". Детальніше ви можете прочитати тут: Що означає повідомлення про помилку git "Сервер не дозволяє запит на нерекламований об'єкт"?
Крім того, немає таких фокусів, як:
git fetch --depth 1 origin <COMMIT_HASH>
Дякую @BenjiWiebe за те, що вказав мені на мою помилку.