NOTA: Mi ejemplo no ayuda a clonar mediante un hash de confirmación, pero ayudará a clonar una etiqueta y tener un repositorio ligero.
Si solo tiene que tener una confirmación en su "clon" y va a utilizar el hash de confirmación, la respuesta corta es NO .
Utilizo esta construcción de comandos (probada en v2.13.2.windows.1 ) para etiquetas:
git clone --depth 1 git@github.com:VENDOR/REPO.git --branch 1.23.0 --single-branch
Ejemplo completo:
$ 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
tamaño de directorio ( 267K vs 2.6M usando full clone
):
$ du -h --max-depth=0 .git
267K .git
Me gustaría denotar, --branch
puede tomar una etiqueta / rama.
https://git-scm.com/docs/git-clone#git-clone---branchltnamegt
--branch
también puede tomar etiquetas y separar HEAD en esa confirmación en el repositorio resultante.
UPD
En pocas palabras, puede tomar "referencias". Puede leer más aquí: ¿Qué significa el mensaje de error de git "El servidor no permite la solicitud de un objeto no anunciado"?
Además, no hay trucos como:
git fetch --depth 1 origin <COMMIT_HASH>
Gracias @BenjiWiebe por señalarme mi error.