Git 2.25.0发布,不用再clone整个仓库了
整理:黄工
素材来源:网络
参考来源: https://github.blog/2020-01-13-highlights-from-git-2-25/
2.sparse checkout,稀疏检出
稀疏检出实际上是一个类似于 .gitignore 的文件路径模式匹配列表,告诉 Git 在检出存储库时可以跳过哪些对象,它的工作对象是副本内容,而不像 .gitignore 是索引。
稀疏检出有一个缺点就是很难指定,比如下边是为了跳过检出深度大于等于 2 的文件:
$ git clone --filter=blob:none --no-checkout /your/repository/here repo
$ cd repo
$ cat >.git/info/sparse-checkout <<EOF
/*
!/*
EOF
$ git config core.sparseCheckout 1
$ git checkout .
首先,指定 --filter = blob:none 要求服务器避免向我们发送 blob,随后使用 --no-checkout 告诉 Git 在检出存储库时跳过 /your/repository/here 这部分,但它实际上还要依赖于 .git/info/sparse-checkout
中的模式匹配。
Git 2.25 中,通过引入新的 git sparse-checkout 命令,让这一操作更加简便。以下是与上边相同功能的 demo:
$ git clone --filter=blob:none --sparse /your/repository/here repo
该git sparse-checkout
命令使用户可以尽可能轻松地进行部分克隆和稀疏检出,无需将复杂的.gitignore
模式匹配编写到.git/info/sparse-checkout
,git sparse-checkout
会直接处理。
git sparse-checkout
可以做四件事:设置(set)要检出的路径列表、打印(list)当前列表以及完全启用(enable)或禁用(disable)稀疏检出。
要检出新路径,只需执行以下命令:
$ git sparse-checkout set /path/to/check/out
此外,对于非常大的仓库,稀疏检出模式匹配列表会过于繁杂,Git 现在提供了一种 cone 模式,执行git config core.sparseCheckoutCone
进入该模式,允许的模式匹配集将变得更加严格,可以直接指定是否在给定子目录内检出所有路径或所有文件,而不是通过 .gitignore 模式匹配。
git sparse-checkout set A/B/C
可以做到这一点。Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
---来自菜鸟教程
如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。
Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
长按识别图中二维码关注