git で特定の commit を SHA-1 hash 値による直接指定で shallow clone (git clone --depth 1) したい。
ところが git clone には branch や tag を指定するオプションはあるが、生のハッシュ値を指定するオプションがない。
ところが git clone には branch や tag を指定するオプションはあるが、生のハッシュ値を指定するオプションがない。
「git clone commithash shallow」とかでググってみたところ、以下のページを見つけた。
clone では出来ないが git 2.5 以降だと以下のようにすれば fetch で行けるとの事。
実は、当初、上記の記述を読み落としていて、コメント 39443458 にあった
- stackoverflow / 2015−07−07: How to shallow clone a specific commit with depth 1?
clone では出来ないが git 2.5 以降だと以下のようにすれば fetch で行けるとの事。
git init git remote add origin <url> git fetch --depth 1 origin <sha1> git checkout FETCH_HEAD
実は、当初、上記の記述を読み落としていて、コメント 39443458 にあった
git clone --depth=1 $url i=1; while ! git show $sha1; do git fetch --depth=$((i+=1)); doneのようなやり方を参考に、目的の commit にたどり着いた後、reset --hard して gc しようかとか馬鹿なこと考えてたんだけど、
- GitHubブログ / 2021-01-13: パーシャルクローンとシャロークローンを活用しよう
- Qiita / masakielastic / 2016-09-11: リモートブランチから特定のコミットだけを取得する
- Znn / 雪猫 /2020-10-10: Git で shallow clone するときに全ブランチの最新履歴を取得する
タグ
コメントをかく