美文网首页半栈工程师
《Git/Gitlab进阶》十一:clone远程仓库很慢的处理

《Git/Gitlab进阶》十一:clone远程仓库很慢的处理

作者: 紫狐挽诗 | 来源:发表于2020-02-25 20:06 被阅读0次

    上一篇有讲到克隆远程仓库,在 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 秒,其它内容如下图:

    1.png

    而直接 clone master 分支的全部,
    编写本文示例测试耗时大约13 分 30 秒,其它内容如下图:

    2.png

    2019/12/26 补充,如果想看实际耗时,在 git 命令前加 time 关键词。

    如果后续想看完整的历史记录,可以将浅层克隆转换为常规克隆。使用:

    git pull --unshallow
    或者
    git fetch --unshallow
    

    不过,这就是重新抓取了该分支所有的提交,也就不如直接一开始就拉取所有了。

    使用示例(同样编写本文示例测试耗时大约13 分 30 秒):

    3.png

    查看当前分支所有提交者及其提交次数,按次数由高到低排序,可用:

    git log | grep "^Author: " | awk '{print $2}' | sort | uniq -c | sort -k1,1nr
    
    4.png

    相关文章

      网友评论

        本文标题:《Git/Gitlab进阶》十一:clone远程仓库很慢的处理

        本文链接:https://www.haomeiwen.com/subject/hjqyfhtx.html