HINWEIS: Mein Beispiel hilft nicht beim Klonen mit einem Commit-Hash, aber es hilft beim Klonen eines Tags und verfügt über ein leichtes Repository.
Wenn Sie nur ein Commit in Ihrem "Klon" haben müssen und Commit-Hash verwenden möchten, lautet die kurze Antwort NEIN .
Ich verwende diese Befehlskonstruktion (getestet in v2.13.2.windows.1 ) für Tags:
git clone --depth 1 git@github.com:VENDOR/REPO.git --branch 1.23.0 --single-branch
Vollständiges Beispiel:
$ 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
dir Größe ( 267K vs 2.6M bei Verwendung von full clone
):
$ du -h --max-depth=0 .git
267K .git
Ich möchte bezeichnen, --branch
kann ein Tag / Zweig nehmen.
https://git-scm.com/docs/git-clone#git-clone---branchltnamegt
--branch
kann auch Tags nehmen und den HEAD bei diesem Commit im resultierenden Repository trennen.
UPD
Kurz gesagt, es kann "refs" dauern. Lesen Sie hier mehr: Was bedeutet die Git-Fehlermeldung "Server erlaubt keine Anforderung für nicht beworbenes Objekt"?
Auch gibt es keine Tricks wie:
git fetch --depth 1 origin <COMMIT_HASH>
Danke @BenjiWiebe, dass du mich auf meinen Fehler hingewiesen hast.