Git fetch a specific commit by hash
See "Pull a specific commit from a remote git repository":
With Git 2.5 (July 2015), you will be able to do:
git fetch --depth=1 <a/remote/repo.git> <full-lenght SHA1>
git cat-file commit $SHA1
If the SHA1 is "reachable" from one of the branch tips of the remote repo, then you can fetch it.
Caveats:
- you need a Git 2.5 remote repo server though, which will handle the
uploadpack.allowReachableSHA1InWant
config (and you need that config to be set totrue
, in order to allow a single commit fetch). - And, as illustrated in crgarridos's answer, you need the full SHA1, and you cannot use
git rev-parse
, since you don't have all the commits, as noted by Jim Hurne in the comments.
As today I tried:
git fetch origin <commit-hash>
And it works like a charm! (git version 2.20.1)
Just be sure the <commit-hash>
is the full length reference
No. According to the manual, git fetch
wants a refspec, the simplest form of which is a ref, and a bare SHA-1 isn't a ref. I.e., the commit has to have a name (branch, tag) on the remote for you to be able to fetch
it.