三把火科技网站设计,做影视网站侵权不,学校网站 asp,wordpress 更改插件样式Debian安装gitlfs:
先更新下软件包版本
sudo apt update
安装
sudo apt install git-lfs
验证是否安装成功
git lfs version
cd到Gitea仓库目录下
cd /mnt/HuHDD/Git/Gitea/Repo/hu/testrepo.git
执行lfs的初始化命令
git lfs install客户机Windows端在官网下载并安装Git-Lfs
再…Debian安装gitlfs:
先更新下软件包版本
sudo apt update
安装
sudo apt install git-lfs
验证是否安装成功
git lfs version
cd到Gitea仓库目录下
cd /mnt/HuHDD/Git/Gitea/Repo/hu/testrepo.git
执行lfs的初始化命令
git lfs install客户机Windows端在官网下载并安装Git-Lfs
再本地Git仓库工作空间下打开Git bash
执行lfs初始化命令
git lfs install
初始化之后发现工作空间如下内容发生了变化 config文件增加了如下内容
[lfs] repositoryformatversion 0 跟踪大文件
现在你可以选择需要用Git LFS跟踪大文件并将它们加入到Git LFS管理中。例如如果你要跟踪所有.mp4 文件可以运行
git lfs track *.mp4
执行了上述命令之后仓库根目录下会出现这个文件 打开这个文件发现内容如下实际就是配置了哪些文件被lfs追踪
*.mp4 filterlfs difflfs mergelfs -text
它告诉 Git 如何处理 .mp4 文件。具体来说
*.mp4这表示这个规则适用于所有扩展名为 .mp4 的文件。filterlfs这表示当 Git 检出和提交这些文件时应该使用 Git LFS 过滤器。这意味着这些文件的内容将由 Git LFS 管理而不是由 Git 本身管理。difflfs 和 mergelfs这表示当 Git 对这些文件进行差异比较和合并时应该使用 Git LFS 的差异比较和合并策略。这通常意味着 Git 将不会尝试对这些文件的内容进行差异比较和合并因为这些文件通常是二进制文件不能像文本文件那样进行差异比较和合并。-text这表示 Git 不应该尝试将这些文件的内容视为文本。这可以防止 Git 在检出文件时自动转换行结束符。
另外会发现hooks钩子目录下会部署以下文件lfs的大文件管理就是基于这些钩子实现的有兴趣的可以深入研究一下 测试提交并推送更改
git add .gitattributes git add your_large_files.mp4 git commit -m Add large files git push origin master 我这里上传了一个一百多M的mp4文件(手头没有mp4文件就拿一个压缩包改了后缀名冒名顶替了一下手动斜眼)。提交并推送之后我们远程到Gitea服务器上去看一下首先看下Gitea代码仓库的大小 才272k显然咱们的大文件果然不会被传入到代码仓库中代码仓库中只会存储对于大文件夹的指针的引用。
那么咱们就去看下之前部署Gitea时所指定的git-lfs的目录下去看看。 大小127M果然是在这里再看一下结构 可以看出文件是按照上面这样一种结构来存储的使用文件的哈希值作为路径名称将代码仓库中的引用指向这里从而实现了大文件与代码仓库中的小文件分开存储的需求。
如果进一步验证的话可以使用下面的命令
使用仓库最后一次的commit对象一直追溯到一个blob对象指针开头为e53f具体细节不再赘述使用下面命令来查看该blob对象的内容
git cat-file -p e53f
会看见这个blob的内容如下
version https://git-lfs.github.com/spec/v1
oid sha256:74add27b1c9d3c39883fee6d130588a3f88959a578a7563b7a519c6e1a864a5d
size 132455501解读一下
version https://git-lfs.github.com/spec/v1这是Git LFS规范的版本信息。
oid sha256:74add27b1c9d3c39883fee6d130588a3f88959a578a7563b7a519c6e1a864a5d这是文件的对象标识符OID它是文件内容的SHA-256哈希值。
size 132455501这是文件的大小单位是字节。
这个指针文件实际上是一个文本文件它指向存储在服务器上的大文件。当您克隆或拉取仓库时Git LFS会下载这些大文件并用它们替换本地的指针文件。这样大文件就不会存储在Git仓库中从而保持了仓库的轻量。
注如果不想每次进行git push时输入密钥的密码可以git bash中执行以下命令
eval ssh-agent -s
ssh-add ~/.ssh/*_rsa eval $(ssh-agent -s)这个命令会启动 SSH 代理。SSH 代理是一个在后台运行的程序它可以保存你的 SSH 密钥并在需要时自动提供密钥。eval 命令会执行 ssh-agent -s 命令的输出这样就可以设置 SSH 代理的环境变量。 ssh-add ~/.ssh/ssh.key这个命令会将你的 SSH 密钥添加到 SSH 代理中。这样当你需要使用 SSH 密钥时SSH 代理可以自动提供密钥你就不需要每次都手动输入密钥的密码。请注意你需要将 ssh.key 替换为你的密钥的实际名称。当然你也可以使用我上面的*号形式的模糊匹配。 下载大文件
其他开发者在克隆仓库时可以通过运行以下命令来下载大文件
git lfs pull
注意事项
请确保所有参与的开发者都安装了Git LFS。在使用Git LFS时确保不要将大文件直接添加到Git仓库而是通过Git LFS进行跟踪和管理。如果你的Gitea服务器是通过HTTPS进行访问的你可能需要在服务器上配置Git LFS的HTTPS认证。