一步步教你安装 Git LFS – wiki基地


手把手教你安装 Git LFS:解决大型文件管理难题

在使用 Git 进行版本控制时,我们通常处理的是代码文件。然而,在很多项目中,除了代码,我们还需要管理大量的二进制文件,例如图片、音频、视频、设计稿、大型数据集、编译后的程序等。将这些大型文件直接添加到 Git 仓库中会带来一系列问题:

  1. 仓库体积急剧膨胀: Git 会存储文件的每一个版本,即使文件只修改了一点点,整个文件也会被存储。大型二进制文件会迅速占用大量存储空间,导致仓库变得非常大。
  2. 克隆和拉取速度变慢: 克隆(clone)或拉取(pull)一个包含大量大型文件的仓库会非常耗时,因为需要下载完整的历史版本数据。
  3. 操作效率降低: 执行 git status, git diff, git commit 等操作时,Git 需要处理这些大文件,导致速度变慢。
  4. 托管服务限制: 许多 Git 代码托管平台(如 GitHub, GitLab, Bitbucket)对免费用户的仓库大小或流量有限制,大型文件很容易触碰这些限制。

为了解决这些问题,Git 社区开发了一个强大的扩展工具:Git Large File Storage (Git LFS)

什么是 Git LFS?

Git LFS 是一个开源的 Git 扩展,它通过将大型文件内容存储在 Git 仓库 外部 的另一个位置,而在 Git 仓库中只保留一个指向这些大型文件的轻量级 指针 来工作。当你克隆或拉取仓库时,Git LFS 会根据指针在需要时下载实际的大文件。这使得 Git 仓库本身保持精简,只包含代码和这些大型文件的指针。

使用 Git LFS 的好处显而易见:

  • 仓库体积小巧: Git 仓库只存储指针,核心部分保持精简。
  • 克隆和拉取速度快: 初始克隆只需要下载代码和指针,速度大大提升。只有当你 checkout 包含大型文件的 commit 时,LFS 才会下载对应的大文件。
  • 更友好的历史记录: Git 历史不再被巨大的二进制文件修改记录所“污染”。
  • 降低托管成本: 大文件不占用 Git 仓库的主要存储配额(虽然 LFS 文件本身也需要存储空间,但这通常由托管服务提供 LFS 存储服务)。

了解了 Git LFS 的重要性,接下来就让我们一步步学习如何在你的系统上安装和配置它。

安装 Git LFS 的先决条件

在开始安装 Git LFS 之前,请确保你的系统已经满足以下条件:

  1. 已安装 Git: Git LFS 是 Git 的一个扩展,因此你需要先安装 Git。你可以通过在命令行输入 git --version 来检查是否已安装以及版本。如果未安装,请访问 https://git-scm.com/ 下载并安装适合你操作系统的 Git 版本。
  2. 基本的命令行操作能力: Git LFS 的安装和基本配置通常通过命令行进行。

一步步安装 Git LFS

Git LFS 的安装方法因操作系统而异。下面我们将详细介绍在 Windows、macOS 和 Linux 系统上最常见的安装方式。

方法一:在 Windows 上安装 Git LFS

在 Windows 上安装 Git LFS 有几种方式,最推荐的是使用官方提供的安装程序或包管理器 Chocolatey。

1. 使用官方安装程序 (推荐)

这是最直接、最简单的方法。

  • 访问 Git LFS 的官方网站或 GitHub 发布页:
  • 在发布页面找到最新版本的 Windows 安装程序 (.exe 文件),通常会有 32 位和 64 位版本,请根据你的系统选择合适的版本。例如,git-lfs-windows-amd64-x.x.x.exe (64位) 或 git-lfs-windows-386-x.x.x.exe (32位),其中 x.x.x 是版本号。
  • 下载 .exe 文件到你的电脑。
  • 找到下载的 .exe 文件,双击运行安装程序。
  • 安装过程非常简单,通常只需要点击 “Next”、”Install” 等按钮,接受许可协议,然后等待安装完成。默认安装路径通常不需要修改。
  • 安装完成后,可以勾选“Launch Git LFS”或类似的选项(如果有),或者直接关闭安装程序。

安装程序会自动将 Git LFS 添加到系统的 PATH 环境变量中,这样你就可以在任何命令行窗口中使用 git lfs 命令了。

2. 使用 Chocolatey 包管理器

如果你是 Windows 用户并使用 Chocolatey 作为包管理器,安装 Git LFS 会非常方便。

  • 首先,确保你已经安装了 Chocolatey。如果尚未安装,请访问 https://chocolatey.org/install 按照官方指引安装。
  • 打开一个具有管理员权限的 PowerShell 或 Command Prompt 窗口。右键点击开始菜单,选择 “Windows PowerShell (管理员)” 或 “命令提示符 (管理员)”。
  • 在命令行中输入以下命令并回车:

    bash
    choco install git-lfs

  • Chocolatey 会自动下载并安装最新版本的 Git LFS。在安装过程中,可能会询问你是否执行脚本,输入 YA(取决于提示)并回车确认。

  • 等待安装完成。

使用 Chocolatey 安装的好处是可以方便地进行后续的更新。

方法二:在 macOS 上安装 Git LFS

在 macOS 上,最流行的安装方式是使用 Homebrew 或 MacPorts 包管理器。

1. 使用 Homebrew (推荐)

Homebrew 是 macOS 上一个非常流行的包管理器,安装软件非常方便。

  • 首先,确保你已经安装了 Homebrew。如果尚未安装,请打开终端(Terminal.app),然后访问 https://brew.sh/index_zh-cn 按照官方指引安装 Homebrew。
  • 安装 Homebrew 后,打开终端,输入以下命令并回车:

    bash
    brew install git-lfs

    * Homebrew 会自动下载并安装最新版本的 Git LFS 及其依赖项。等待安装过程完成。

安装完成后,Git LFS 就会被添加到你的系统路径中。

2. 使用 MacPorts

如果你偏好使用 MacPorts 包管理器,可以使用以下命令安装 Git LFS。

  • 首先,确保你已经安装了 MacPorts。如果尚未安装,请访问 https://www.macports.org/install.php 按照官方指引安装 MacPorts。
  • 安装 MacPorts 后,打开终端,输入以下命令并回车:

    bash
    sudo port install git-lfs

    * 系统可能会提示你输入管理员密码。输入密码并回车。
    * MacPorts 会下载并安装 Git LFS。等待安装完成。

3. 手动安装 (不推荐)

你也可以从 Git LFS 的 GitHub 发布页下载 macOS 版本的压缩包 (.tar.gz),解压后将可执行文件 (git-lfs) 移动到系统的 PATH 目录中(例如 /usr/local/bin)。但这通常比使用包管理器复杂,且不方便后续更新,不建议普通用户使用。

方法三:在 Linux 上安装 Git LFS

在 Linux 上,大部分发行版都提供了 Git LFS 的软件包,你可以使用系统自带的包管理器进行安装。

1. 使用系统包管理器 (推荐)

根据你使用的 Linux 发行版,选择相应的命令:

  • Debian/Ubuntu 及其衍生版 (使用 apt 或 apt-get):

    “`bash
    sudo apt-get install git-lfs

    或者使用较新的 apt 命令

    sudo apt install git-lfs
    “`
    输入管理员密码,确认安装。

  • Fedora/CentOS/RHEL 及其衍生版 (使用 dnf 或 yum):

    • Fedora 22 及更高版本 / CentOS Stream / RHEL 8+ (使用 dnf):
      bash
      sudo dnf install git-lfs
    • CentOS/RHEL 7 及更早版本 (使用 yum):
      bash
      sudo yum install git-lfs

      输入管理员密码,确认安装。
  • Arch Linux 及其衍生版 (使用 pacman):

    bash
    sudo pacman -S git-lfs

    输入管理员密码,确认安装。

  • openSUSE (使用 zypper):

    bash
    sudo zypper install git-lfs

    输入管理员密码,确认安装。

如果你使用的是其他 Linux 发行版,请查阅该发行版的文档,寻找安装 Git LFS 的方法,通常也是通过其包管理器进行安装。

2. 从源代码编译安装 (不推荐)

Git LFS 是用 Go 语言编写的。如果你无法通过包管理器安装,或者需要安装特定版本,可以从源代码编译安装。这要求你的系统已安装 Go 语言开发环境。

  • 首先,确保你已安装 Go 1.8 或更高版本。
  • 访问 Git LFS 的 GitHub 仓库:https://github.com/git-lfs/git-lfs
  • 克隆仓库:
    bash
    git clone https://github.com/git-lfs/git-lfs.git
    cd git-lfs
  • 编译并安装:
    bash
    make
    sudo make install

    make install 会将编译好的 git-lfs 可执行文件安装到 /usr/local/bin 目录下(或其他在 PATH 变量中的目录),并将 man 手册页安装到 /usr/local/share/man

这种方法更适合开发者或需要高度定制的用户,对于普通用户,强烈建议使用包管理器安装。

安装后的重要步骤:初始化 Git LFS

无论你使用哪种方法安装了 Git LFS,安装程序或包管理器通常只会将 git-lfs 可执行文件放到你的系统 PATH 中。要让 Git LFS 真正与你的本地 Git 环境协同工作,你还需要进行一次全局或针对用户的初始化。

打开你的命令行终端,输入以下命令并回车:

bash
git lfs install

这个命令非常重要!它会执行以下操作:

  1. 检查 Git 版本: 确保你的 Git 版本支持 Git LFS。
  2. 安装 Git Hooks: 在你的用户主目录下(~/.git-templates 或 Git 安装目录下的 share/git-core/templates),Git LFS 会安装一些 Git 钩子 (hooks) 模板,最重要的是 pre-push 钩子。这些钩子会在你执行 git commitgit push 等操作时被 Git 调用,从而让 Git LFS 接管大文件的处理。
  3. 配置全局 Git 设置: 设置 git config --global filter.lfs.clean, filter.lfs.smudge, filter.lfs.process 以及 lfs.repository 等选项,告诉 Git 在遇到 LFS 指针时如何调用 git-lfs 程序进行处理。

你只需要运行 git lfs install 一次(针对你的用户账户),后续创建或克隆的 Git 仓库都会自动继承这些设置。如果你在一个已有的仓库中安装 Git LFS 并想立即启用,也可以在该仓库目录下运行 git lfs install,它会确保仓库的钩子设置正确。

验证 Git LFS 安装

安装并初始化后,你可以验证 Git LFS 是否成功安装并添加到系统路径中。

在命令行中输入以下命令并回车:

bash
git lfs version

如果安装成功,你应该会看到 Git LFS 的版本号,例如:

git-lfs/3.4.0 (GitHub; linux amd64; go 1.21.5)

这表明 git-lfs 命令可以被系统识别和执行。

你还可以使用以下命令查看 Git LFS 的环境配置信息:

bash
git lfs env

这个命令会输出当前 Git LFS 的一些配置信息,包括 Git LFS 的版本、Git 版本、操作系统、LFS 存储路径等,这些信息有助于排查问题。

Git LFS 的基本使用 (安装完成后)

安装 Git LFS 只是第一步。要让它工作起来,你还需要在你的 Git 仓库中告诉它哪些文件类型需要由 LFS 管理。

  1. 进入你的 Git 仓库目录:
    bash
    cd /path/to/your/git/repo
  2. 跟踪特定文件类型: 使用 git lfs track 命令指定需要由 LFS 管理的文件类型。例如,要跟踪所有 .psd (Photoshop 文件) 和 .mp4 (视频文件):
    bash
    git lfs track "*.psd" "*.mp4"

    这个命令会在你的仓库根目录下创建一个或修改一个名为 .gitattributes 的文件。这个文件告诉 Git 哪些文件模式应该使用 Git LFS 的过滤器。.gitattributes 文件本身是一个小文本文件,应该被提交到 Git 仓库中,以便其他协作者也能正确处理这些 LFS 管理的文件。
  3. 提交 .gitattributes 文件:
    bash
    git add .gitattributes
    git commit -m "Add Git LFS tracking for PSD and MP4 files"
  4. 像往常一样添加和提交大文件: 现在,当你添加并提交那些被跟踪的文件时,Git 会自动通过 Git LFS 来处理它们。在 Git 仓库中实际存储的是 LFS 指针,而不是文件内容。
    bash
    git add path/to/your/large/file.psd
    git commit -m "Add the large PSD file"
  5. 推送到远程仓库: 当你执行 git push 时,Git LFS 的钩子会自动检测需要上传的大文件,并将它们上传到远程仓库配置的 LFS 存储服务中,然后再将包含 LFS 指针的 Git commit 推送到远程 Git 仓库。

总结

Git LFS 是一个非常实用的工具,它极大地改善了 Git 在处理大型二进制文件时的性能和体验。通过本文详细的步骤指引,你应该已经成功地在你的系统上安装并初始化了 Git LFS。记住,安装只是第一步,关键在于在你的仓库中使用 git lfs track 命令来指定需要 LFS 管理的文件,并提交 .gitattributes 文件。

现在,你可以放心地在你的 Git 项目中包含大型文件了,享受更快速、更整洁的 Git 工作流程吧!如果在安装或使用过程中遇到问题,可以查阅 Git LFS 的官方文档或在线搜索相关的错误信息,通常都能找到解决方案。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部