hack のためのネタ帳, etc,,,

状況

git で特定の commit を SHA-1 hash 値による直接指定で shallow clone (git clone --depth 1) したい。
ところが git clone には branch や tag を指定するオプションはあるが、生のハッシュ値を指定するオプションがない。

解法

git clone commithash shallow」とかでググってみたところ、以下のページを見つけた。
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 しようかとか馬鹿なこと考えてたんだけど、 から「git-rev-list」でググって で上記の方法に行き当たり、改めて上記の stackoverflow のスレ見たらちゃんと書いてるじゃん!!!というアホみたいな回り道をしてしまった orz

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます