我想使用git clone --depth [N],但要使用这样的N,以保证获得特定的sha。我如何在远程仓库中确定sha的深度。注意,在本地克隆它是第22条军规。我想这样做是为了避免克隆它。
git clone --depth [N]
N
k2arahey1#
选项一:
如果您能够获得存储库的完整克隆,则可以使用git rev-list HEAD ^42c6ee9 --count查找深度。这将找到任何特定提交的深度。没有远程版本,所以只有当你可以维护一个完整的副本,然后将ssh放入其中以计算深度时,这才有效。这使您只需克隆一次,然后您就可以回答以下所有您想要进行浅拷贝的时间的问题。
git rev-list HEAD ^42c6ee9 --count
ssh
选项二:
使用git clone --depth 1然后在git fetch --depth=i+1上迭代实际上是一个值得测试的好主意。根据您的存储库的特性,这将是有意义的。例如Django仓库有23330次提交(在测试时)./full.sh-提取完整的本地存储库
git clone --depth 1
git fetch --depth=i+1
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
型
kupeojn62#
您可以使用git clone --depth 1创建一个初步的浅克隆,然后使用git fetch --depth N逐步增加历史深度,直到所需的提交到达。从git-fetch的文档中:
git fetch --depth N
git-fetch
--depth=<depth>
限制从每个远程分支历史记录的顶端提取指定数量的提交。如果提取到由git clone使用--depth=<depth>选项创建的 * 浅 * 存储库(参见git-clone),* 加深或缩短历史记录到指定数量的提交 *。不提取深化提交的标签。
git clone
2条答案
按热度按时间k2arahey1#
选项一:
如果您能够获得存储库的完整克隆,则可以使用
git rev-list HEAD ^42c6ee9 --count
查找深度。这将找到任何特定提交的深度。没有远程版本,所以只有当你可以维护一个完整的副本,然后将
ssh
放入其中以计算深度时,这才有效。这使您只需克隆一次,然后您就可以回答以下所有您想要进行浅拷贝的时间的问题。
选项二:
使用
git clone --depth 1
然后在git fetch --depth=i+1
上迭代实际上是一个值得测试的好主意。根据您的存储库的特性,这将是有意义的。
例如Django仓库有23330次提交(在测试时)
./full.sh-提取完整的本地存储库
字符串
./oracle.sh-如果你神奇地知道正确答案。时间下限。
型
./search.sh-迭代
型
搜索,虽然有开销,可能仍然出来快,然后一个完整的克隆。
型
kupeojn62#
您可以使用
git clone --depth 1
创建一个初步的浅克隆,然后使用git fetch --depth N
逐步增加历史深度,直到所需的提交到达。从
git-fetch
的文档中:--depth=<depth>
限制从每个远程分支历史记录的顶端提取指定数量的提交。如果提取到由
git clone
使用--depth=<depth>
选项创建的 * 浅 * 存储库(参见git-clone),* 加深或缩短历史记录到指定数量的提交 *。不提取深化提交的标签。