雅诗的小世界
明明只是活着, 哀伤却无处不在。
——秒速5厘米
git 局部克隆
2019年2月10日 • 我的博客
这是一篇原创文章,转载请注明来自雅诗的小世界

 

我遇到了一个这样的问题:我准备往 Github 项目中贡献一些内容,但是 git clone 的瞬间,我发现这个项目实在是太大了,提交不到 MB 的内容,我却要先下载上 GB 的内容,加上网络原因,仅仅是 clone 操作就要按小时计算,感觉已经很丧病了,于是是时候解决这个问题了!Fork 项目,先不着急克隆到本地,而是在本地新建一个仓库!首先,创建项目文件夹,初始化仓库。
$ mkdir dress
$ cd dress
$ git init
已初始化空的 Git 仓库于 /Volumes/RamDisk/dress/.git/
然后,从 Github 上复制 HTTPS 或 SSH 同步网址,并告诉这个仓库:
$ git remote add -f origin https://github.com/kagurazakayashi/Dress.git
更新 origin 中
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 2863 (delta 1), reused 2 (delta 0), pack-reused 2855
接收对象中: 100% (2863/2863), 872.37 MiB | 322.00 KiB/s, 完成.
处理 delta 中: 100% (997/997), 完成.
来自 https://github.com/kagurazakayashi/Dress
* [新分支] gh-pages -> origin/gh-pages
* [新分支] master -> origin/master
* [新分支] web -> origin/web
遗憾的是,这仍然花掉了很多时间,还是传输了很多的内容下来。不过,这比起按 GB 计算的总项目大小,已经轻松很多了。
可以看到,这个文件夹里什么都没有(有一个隐藏的 .git 文件夹),目前确实是没有下载这些文件。于是,下面重点来了,将这个本地库设置为「稀疏模式」吧:
$ git config core.sparsecheckout true
什么都没有返回就是正常了。接下来就要告诉 git ,你需要同步哪些文件下来了,创建配置文件 sparse-checkout ,去里面指定你要同步的文件夹吧(不会用 vim 的话用其他纯文本处理软件也可):
$ vim .git/info/sparse-checkout
例如,我只要同步项目里的「KagurazakaYashi」文件夹,只要这样填就 OK 了,注意后面加上「/」:
然后,用这个命令开始同步试试:
$ git pull origin master
来自 https://github.com/kagurazakayashi/Dress
* branch master -> FETCH_HEAD
可以看到,本地项目文件夹里只有这个文件夹出现了。
下面,我再加入一个项目中没有的文件夹「yashi」:
$ git pull origin master
来自 https://github.com/kagurazakayashi/Dress
* branch master -> FETCH_HEAD
已经是最新的。
注意,如果只设置一个没有的文件夹,会又到一句提示:
error: Sparse checkout leaves no entry on working directory
它只是提醒一下你没有什么可同步的而已,无视掉就好。
接下来,我们创建这个文件夹,并随便拷贝个文件进去以测试:
$ mkdir yashi
$ cp /Volumes/RamDisk/SAM0218.jpg yashi/
然后新增这个文件到暂存,并查看状态:
$ git add .
$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
新文件: yashi/SAM0218.jpg
可以看到刚才新增的文件已经在里面了,让我们提交看看:
$ git push
fatal: 当前分支 master 没有对应的上游分支。
为推送当前分支并建立与远程上游的跟踪,使用
git push --set-upstream origin master
根据这个提示,输入这个命令,会提示你输入 github 的用户名和 Personal access tokens (如果开启账户安全,否则直接输入密码),只有这次 push 的时候需要这样设置一下:
$ git push --set-upstream origin master
Username for 'https://github.com': kagurazakayashi
Password for 'https://kagurazakayashi@github.com':
枚举对象: 5, 完成.
对象计数中: 100% (5/5), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (3/3), 完成.
写入对象中: 100% (4/4), 413.30 KiB | 15.31 MiB/s, 完成.
总共 4 (差异 1),复用 0 (差异 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/kagurazakayashi/Dress.git
a508d04..ecd8f89 master -> master
分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。
可以在网页上看到,提交已经成功了。

评论区(为了避免垃圾信息,部分留言可能不会立即显示,其实已经发送成功,在我回复时会显示出来。)

发表评论

昵称
电子邮件
网址(选填)

更多栏目

联系我

 
Telegram Google+ Facebook Twitter
新浪微博 Github Steam 哔哩哔哩
 

分享本页

当前页面二维码

微信公众号
微信公众号

友谊广告

喵窩MC

云颜文字

樱花国代购

小猫设置


设置/关闭猫咪

🐱 Configure Neko
×

 Display

Size:


Refresh:


 Sensitivity

Speed:


Sensitivity:


OK
About
Exit

🐱 About Neko
×

Neko for HTML5 v1.0

Written by Kagurazaka Yashi.
Taking ingredients from Windows Version:
The original program (X-Windows)
was written by Masayuki Koba and
later modified by Tatsuya Kato.

This program is proud to be FREEWARE!

Github...
OK