网上说的这个,其实是全部fetch到本地仓库,然后检出其中指定目录:
$ git init <project>
$ cd <project>
$ git remote add origin ssh://<user>@<repository's url>
$ git config core.sparsecheckout true
$ echo "path1/" >> .git/info/sparse-checkout
$ echo "path2/" >> .git/info/sparse-checkout
$ git pull origin master
没用的,都拉到本地仓库了,耗网络和占用磁盘了。
我的解决方案
为了一个仓库能够放不同类型的文件夹资源,而且每次下载都能下载到其中指定文件夹,
- 新建一个仓库,提交第一个commit,打个tag,标记为原始节点。
- 每次需要提交特定的文件夹,先从原始节点新建一个分支,提交到这个分支下
- 下载时候,同个fetch单独取出一个分支到本地然后checkout,避免每次把整个仓库下载下来。
对于不小心错误提交了大文件,或者提交了密码上去,需要删除记录,否则还是能看到的。
- 首先,如果上传大文件,必须作为一个单次的commit然后push到GitHub,这样方便以后删除整个conmmit节点而不会冲突和其他危险。
git-filter-branch-重写分支
一个有点危险的命令- 查看教程或者自己百度吧:使用git filter-branch删除没有使用的大文件