上一篇有讲到克隆远程仓库,在 clone 时,如果每次都 clone 完整的仓库的话,随着提交的次数变多,在项目变大之后,clone 的速度会非常的慢。
所以克隆时可以设定参数 --depth 1
,加快 clone 速度
-- depth
代表克隆的深度,--depth 1
代表只克隆最新一次提交记录以及这次提交之后的最新内容,不克隆历史提交。
这样所造成的影响就是不能查看历史提交记录,但是克隆速度大大提升。
完整命令:
git clone --branch <branch_name> <remote-address> --depth 1
查看 commit 总数,可用:
git rev-list --all --count
或者
git log --oneline | wc -l
后续补充:
注意,这里 git rev-list 查看到的提交数量,并不一定和仓库中显示的提交数一样,获取的原理不同。后者是一致的。
详细请查看官方文档关于git rev-list的说明。
查看简要显示日志,可用:
git log --all --oneline
示例,今日(2019/12/25)克隆 github 中 tensorflow 项目,深度只有 1 层,
编写本文示例测试耗时大约4 分 15 秒,其它内容如下图:
而直接 clone master 分支的全部,
编写本文示例测试耗时大约13 分 30 秒,其它内容如下图:
2019/12/26 补充,如果想看实际耗时,在 git 命令前加 time 关键词。
如果后续想看完整的历史记录,可以将浅层克隆转换为常规克隆。使用:
git pull --unshallow
或者
git fetch --unshallow
不过,这就是重新抓取了该分支所有的提交,也就不如直接一开始就拉取所有了。
使用示例(同样编写本文示例测试耗时大约13 分 30 秒):
查看当前分支所有提交者及其提交次数,按次数由高到低排序,可用:
git log | grep "^Author: " | awk '{print $2}' | sort | uniq -c | sort -k1,1nr