我想使用git clone --depth [N]
,但要使用保证获得特定sha的N
。
如何确定远程仓库中的sha的深度。注意在本地克隆它是为了捕获22.我想这样做是为了避免克隆它。
答案 0 :(得分:3)
选项1:
如果您能够获得存储库的完整克隆,则可以使用git rev-list HEAD ^42c6ee9 --count
找到深度。
这将找到任何特定提交的深度。没有远程版本,因此只有在您可以保留完整副本然后ssh
进入其中以确定深度时才有效。
这使您只需要克隆一次,但是您可以在以下所有时间内回答问题,并希望进行浅层复制。
选项2:
使用git clone --depth 1
然后迭代git fetch --depth=i+1
实际上是一个值得测试的好主意。 (同样由@leon提出)。
根据存储库的特性,这是有意义的。
E.g。 Django存储库有23330次提交(在测试时)
./ full.sh - 拉动完整的本地存储库
git clone https://github.com/django/django
./ oracle.sh - 如果你神奇地知道正确的答案。按时下限。
git clone --depth 10 https://github.com/django/django.git
./ search.sh - 迭代
git clone --depth 1 https://github.com/django/django.git
cd django
i=1
until git show 5d35181 > /dev/null
do
i=$((i+1))
git fetch --depth=$i
done
搜索虽然有开销,但仍可能比完整克隆更快出现。
./full.sh 21.34s
./oracle.sh 1.12s
./search.sh 3.05s
答案 1 :(得分:1)