从local user安装到使用的git-lfs采坑小结

用Google Drive吧

Posted by Y's Blog on June 30, 2019

前言

某Y最近在往github上倒腾点东西,想着分享一些code和data。然而遇到了一系列很蛋疼的问题!首先,大于25M的文件无法直接通过拖拽上传,必须使用Git-LFS的服务!其次,在某Y倒腾了好久终于成功使用Git-LFS后才发现,免费空间只有1GB!对比Google Drive的免费15GB。。。然而这还不是重点!google drive只需要20刀每年就可以升级至100GB!反观Git-LFS,5刀每月从1GB升级至50GB。。。好嘛,这个翻了50倍呢😂😂😂不过既然踩了那么多坑研究的东西,还是在这分享给大家一些使用心得吧

Installation

Git LFS (Git Large File Storage)是一种用来存储,传输大型数据的开源Git延展服务。由于其安装默认在root路径中进行,安装者需具备root权限才可以安装。仅管其也提供了python安装的途径(使用--user即可安装在local路径下),但是以这种方式安装的git-lfs只能用来查看文件,无法进行上传存储等操作!

为了能够在local user下安装真正可以用的git-lfs,某Y在一通折腾后找到了方法!

首先,我们需要在其github主页上下载安装文件包Linux AMD64。解压后我们可以看到四个文件

git-lfs
CHANGELOG.md
README.md
install.sh

直接运行bash install.sh会报错,提示需要sudo权限。此时,我们只需要用文本编辑器打开install.sh,将prefix后面的路径修改为local user下的自定义路径,保存后再bash即可完美运行!!!安装好后记得将刚才修改的路径添加到PATH变量中

export PATH=$PATH:your_path

输入下面命令即可检查是否顺利安装

git lfs install

How to use git-lfs

接下来我们以上传一个本地.zip文件到github上的个人repository为例详细阐述git-lfs的使用过程

1) Track your file

git lfs track "*.zip"

这里有两点一定一定要注意:

  • 待追踪的文件名一定要用双引号标出。
  • 如果出现报错Not a git repository.,输入命令git init对该文件夹下的.git文件进行初始化。

此时,我们可以看到屏幕输出结果为

Tracking "*.zip"

2) Add tracking file to git

同时我们可以在当前文件夹里找到一个新生成的隐藏文件.gitattributes。该文件里记录了需要追踪的文件类型。接下来我们要做的就是将这个文件加入到git里来确保会对这里类型文件追踪

git add .gitattributes

3) Add data and topics to git

完成后我们开始利用git进行文件上传

git add DFC15_multilabel.zip
git commit -m "upload dataset"

注意,如果上传文件较多的话可以用下面的命令替换上面的第一行命令(搜索会遍历当前文件夹集所有的子文件夹!

git add *.zip

完成后可以看到待上传的文件信息以及该上传任务的topics:

[master (root-commit) 570e904] upload dataset
 2 files changed, 1 insertion(+)
 create mode 100644 .gitattributes
 create mode 100644 DFC15_multilabel.zip

4) Commit to remote repository via git

在上传前一定记得设定origin,也就是你所希望上传到的repository路径(以.git结尾

git remote add origin https://github.com/Hua-YS/DFC15_multilabel.git
git push origin master

此时会需要输入github的用户名(不是登录名!)和密码

Username for 'https://github.com:Hua-YS'
Password for 'https://Hua-YS@github.com:'

完成后剩下的就是等待啦😆😆😆不过需要注意的是每个文件夹中文件数量不能超过1000,否则会给出如下提示

对的,系统会给你自动砍掉超出数量的文件!因此在文件数量较多的时候建议以压缩包的形式上传。

总结

去Google Drive重新上传一遍了。。。