debian12部署Gitea服务之二——部署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 filter=lfs diff=lfs merge=lfs -text

它告诉 Git 如何处理 .mp4 文件。具体来说:

  • *.mp4:这表示这个规则适用于所有扩展名为 .mp4 的文件。
  • filter=lfs:这表示当 Git 检出和提交这些文件时,应该使用 Git LFS 过滤器。这意味着这些文件的内容将由 Git LFS 管理,而不是由 Git 本身管理。
  • diff=lfsmerge=lfs:这表示当 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
  1. eval "$(ssh-agent -s)":这个命令会启动 SSH 代理。SSH 代理是一个在后台运行的程序,它可以保存你的 SSH 密钥,并在需要时自动提供密钥。eval 命令会执行 ssh-agent -s 命令的输出,这样就可以设置 SSH 代理的环境变量。

  2. 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认证。
  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Debian 12 上部署 Kubernetes (k8s),你可以按照以下步骤进行操作: 1. 安装 Docker:Kubernetes 需要依赖 Docker 运行容器。你可以按照 Docker 官方文档的指引安装 Docker。 2. 添加 Kubernetes APT 源:在终端中执行以下命令,将 Kubernetes APT 源添加到系统中。 ``` $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - $ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list $ sudo apt update ``` 3. 安装 kubeadm、kubelet 和 kubectl:在终端中执行以下命令安装 kubeadm、kubelet 和 kubectl。 ``` $ sudo apt install -y kubelet kubeadm kubectl ``` 4. 初始化 Kubernetes 集群:使用 kubeadm 初始化 Kubernetes 集群。首先,选择一个节点作为主节点,执行以下命令初始化主节点。 ``` $ sudo kubeadm init ``` 执行完毕后,将输出一些配置信息以及加入集群的命令。请将这些信息保存下来,稍后会用到。 5. 安装网络插件:Kubernetes 需要一个网络插件来实现容器之间的通信。你可以选择安装 Calico、Flannel 或其他网络插件。以下是安装 Calico 的示例命令: ``` $ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` 6. 加入其他节点:如果你有其他节点要加入到集群中,可以在其他节点上执行第 3 步和第 5 步的操作,并在主节点上运行加入集群的命令。 ``` $ sudo kubeadm token create --print-join-command ``` 将输出的命令在其他节点上执行,即可将其加入到集群中。 以上就是在 Debian 12 上部署 Kubernetes 的基本步骤。你可以根据实际情况进行相应的配置和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值