国内免费git仓库及git lfs大文件存储方案 (LFS)使用

Git LFS 全名 Git Large File Storage,是Github带头在2015年推出的解决方案。

Git仓库大了怎么办?
文件大了不敢放?
音视频担心占用空间?
GitHub拉代码慢?

顺手广告目前国内的2款免费仓库:

  1. 腾讯的“腾讯工蜂”(支持LFS)
    传送门:https://code.tencent.com/
  2. 阿里的“云效-代码托管”(不支持LFS)
    传送门:https://code.aliyun.com/

皮哥带你快速开始,三步搞定

一、下载并安装Git LFS拓展

  • Windows / Linux 安装包

GIT LFS下载:官网下载页
注意:Windows用户的Git客户端推荐使用2.16+的版本,如果版本太低可能无法使用lfs

  • Windows / Cygwin 安装

根据安装向导安装下载的 .exe 包后,启动一个新的cmd命令行窗口;执行以下命令:
git lfs install

  • BSD / Linux

下载完压缩包后,打开命令行进入下载文件所处的目录,并执行以下命令:
tar xf git-lfs-.tar.gz
cd git-lfs-

sudo ./install.sh
也可使用内置支持Git LFS的客户端,例如SourceTree

  • Mac

brew install git-lfs
git lfs install

二、初始化Git LFS

执行命令:git lfs install PS:其实上面已经做过,再次执行会提醒,略过此步骤。。。
在这里插入图片描述

三、应用lfs(从下面的1、2、3、4选择适合自己的情况继续阅读)

  1. 拉取远程git仓库项目

转到文章末尾查看:备用2、获取仓库

  1. 本地新开项目,需提交至git仓库

在远程git控制台上创建项目,复制其仓库地址
进入本地项目文件夹,打开git base窗口,windows尽量不要用cmd(有些命令不支持)
git init
git remote add origin 仓库地址
转到文章末尾查看:备用1、配置想要加入LFS托管的文件规则(一定要先执行这一步,否则还得删库从头再来一遍)
git add .
git commit -am"皮哥wangji5850提醒你,此处是注释信息"
git push -u origin master

以后就正常的编辑本地文件,然后 git add .,git commit,git push即可

  1. 本地已存在文件夹但无git仓库,需提交至git仓库

同2.的操作;git push的时候,会看到Uploading LFS objects,说明引入OK。By the way,腾讯工蜂的速度可以的!大赞。有种feeling叫:借问寂寞何处了,隔壁老王帮你忙~~~
在这里插入图片描述

  1. 本地已有git项目切换至新git仓库

进入本地项目文件夹,打开git base窗口,windows尽量不要用cmd(有些命令不支持)
git status 确定是否还要提交文件到旧仓库
git remote set-url origin 新仓库地址 (这里有其他remove、add命令,依据个人喜好使用。)
转到文章末尾查看:备用1、配置想要加入LFS托管的文件规则(一定要先执行这一步,否则还得删库从头再来一遍)
git add .
git commit -am"皮哥wangji5850提醒你,此处是注释信息"
git push -u origin master


恭喜你,lfs成功引入。


备用1、配置想要加入LFS托管的文件规则

如果你无需使用git lfs,请返回,不要往下看

git lfs track “.png" ".jpg” “.gif" ".psd” “.sketch" ".xls” “.xlsx" ".rar” “.zip" ".pdf”
git lfs track (用来检查是否track成功,如下图代表OK)
在这里插入图片描述

例如:
UI设计稿通常会比较大,我们将目录下所有的. “.png" ".jpg” “.gif" ".psd” “.sketch" ".xls” “.xlsx" ".rar” ".zip" ".pdf"文件添加,使其被LFS托管;这样就不会占用版本库大小:
在这里插入图片描述
在这里插入图片描述

备用2、获取仓库

如果自己的相关工作不涉及到被 Git LFS 所管理的文件的话,可以选择只获取 Git 仓库自身的内容,而完全跳过 LFS 对象的获取。(同样使用于其他 git 命令,如 checkout, reset 等。)

  • 只clone仓库本身而不获取任何 LFS 对象

GIT_LFS_SKIP_SMUDGE=1 git clone 仓库地址

git -c filter.lfs.smudge= -c filter.lfs.required=false clone 仓库地址

  • 获取master分支所有文件

git clone 仓库地址

注意:如果本地没有安装git lfs且只clone了仓库本身,git pull只能获取仓库本身而不获取任何 LFS 对象

  • 获取所有分支的所有文件

git clone xxx
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

  • 获取当前 commit 下包含的 LFS 对象的当前版本

git lfs fetch
git lfs checkout
或 git lfs pull

备用3、暂无

ps:鉴于个人经验有限,所有观点,如有异议,请直接回复讨论(请勿发表攻击言论)。
加入QQ群209952809(需回答问题,答案为csdn);群聊更快解决问题,更happy。

扩展阅读:LFS提升篇


本地已经提交过一个或多个包含大文件的commit

如果本地已经提交过包含大文件的commit,如下图:

在这里插入图片描述

请使用 git reset --mixed 回退到未包含大文件的前一个commit点。示例中add txt这个commit包含了大文件,所以要回退到上一个commit。 (只提交了一个commit,可以直接git reset --mixed HEAD^;如果不清楚哪个commit包含大文件,可以git reset --mixed origin/master,示例中为master。)

在这里插入图片描述

注意:最多回退到origin/master,再往前,push就会引起冲突了。

如何确定需要跟踪的文件后缀?(windows环境请用git自带的Git Bash,示例是查找超过1M的文件)

在这里插入图片描述

进行LFS跟踪:如果查找的大文件后台是.jar,直接 git lfs track “.txt"。(跟踪多种后缀:git lfs track ".png” “*.jar”)

注意:一定要先track再add、commit,如果没安装过LFS,请查看安装指南。

在这里插入图片描述

再进行git add和git commit操作。使用 git lfs ls-files 确认一下,是否已经track LFS对象。(如果ls-files列表为空,说明没track上)

在这里插入图片描述

这个时候能正常push了,push时可以看到 Uploading LFS objects字样。(如果LFS对象没push上,可以尝试git lfs push)

在这里插入图片描述

本地全部历史都需进行LFS转换

如果项目是从外部导入或从SVN导入的,本地全部历史都需进行LFS转换,且需保留历史的,请使用以下方式:

在这里插入图片描述

如上图,有几个commit包含超过1M的pdf和jar文件,直接push工程会被拦截导致报错。

如何知道全部的commit历史中哪些文件过大?必须使用(git-lfs/2.7.1及以上版本) git lfs migrate info --above=“1 MB” --everything --top 10

在这里插入图片描述

对这个项目的全部分支的历史记录进行LFS对象转换,使用 git lfs migrate import --include=".jar,.pdf" --everything

在这里插入图片描述

确保lfs对象已跟踪后,推送到远端。(push全部可以 git push origin --all git push origin --tags,如果还不成功尝试git lfs push)

在这里插入图片描述

注意:LFS对象转换会改写历史记录(即commit sha1会发生变化),再更新原(github或svn)项目时会产生大量冲突。
只适用一次迁移的情形,不适用github或svn和工蜂并行使用。(以后还有更新github或svn,需要重新clone一份,再做一次git
lfs migrate)

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值