Help us learn about your current experience with the documentation. Take the survey.

文件管理

Git 提供文件管理功能,帮助您跟踪变更、与他人协作,并高效管理大文件。

文件历史

使用 git log 查看文件的完整历史记录,了解文件随时间的变化。 文件历史记录显示:

  • 每次变更的作者。
  • 每次修改的日期和时间。
  • 每次提交中做出的具体变更。

例如,要查看 gitlab 仓库根目录中 CONTRIBUTING.md 文件的 history 信息,请运行:

git log CONTRIBUTING.md

示例输出:

commit b350bf041666964c27834885e4590d90ad0bfe90
Author: Nick Malcolm <nmalcolm@gitlab.com>
Date:   Fri Dec 8 13:43:07 2023 +1300

    更新安全联系人和漏洞披露信息

commit 8e4c7f26317ff4689610bf9d031b4931aef54086
Author: Brett Walker <bwalker@gitlab.com>
Date:   Fri Oct 20 17:53:25 2023 +0000

    修复行为准则链接

    并精简了一些措辞

检查文件的先前变更

使用 git blame 查看谁对文件进行了最后一次修改以及修改时间。 这有助于理解文件内容的上下文、解决冲突,并确定特定变更的责任人。

如果您想查找本地目录中 README.md 文件的 blame 信息:

  1. 打开终端或命令提示符。

  2. 进入您的 Git 仓库。

  3. 运行以下命令:

    git blame README.md
  4. 要浏览结果页面,按 空格键

  5. 要退出结果,按 Q

此输出显示文件内容,并带有注释,显示每行的 commit SHA、作者和日期。例如:

58233c4f1054c (Dan Rhodes           2022-05-13 07:02:20 +0000  1) ## 贡献者许可协议
b87768f435185 (Jamie Hurewitz       2017-10-31 18:09:23 +0000  2)
8e4c7f26317ff (Brett Walker         2023-10-20 17:53:25 +0000  3) 对此仓库的贡献需遵守
58233c4f1054c (Dan Rhodes           2022-05-13 07:02:20 +0000  4)

Git LFS

Git Large File Storage (LFS) 是一个扩展,帮助您管理 Git 仓库中的大文件。 它用文本指针替换 Git 中的大文件,并将文件内容存储在远程服务器上。

先决条件:

添加和跟踪文件

要将大文件添加到您的 Git 仓库并使用 Git LFS 跟踪它:

  1. 配置特定类型所有文件的跟踪。将 iso 替换为您想要的文件类型:

    git lfs track "*.iso"

    此命令创建一个 .gitattributes 文件,其中包含使用 Git LFS 处理所有 ISO 文件的说明。以下行将添加到您的 .gitattributes 文件中:

    *.iso filter=lfs -text
  2. 将该类型的文件(.iso)添加到您的仓库。

  3. 跟踪 .gitattributes 文件和 .iso 文件的变更:

    git add .
  4. 确保您已添加两个文件:

    git status

    .gitattributes 文件必须包含在您的提交中。 如果未包含,Git 不会使用 Git LFS 跟踪 ISO 文件。

    确保您正在更改的文件未列在 .gitignore 文件中。 如果它们被列出,Git 会将变更提交到本地,但不会推送到您的上游仓库。

  5. 将两个文件提交到您的本地仓库副本:

    git commit -m "添加一个 ISO 文件和 .gitattributes"
  6. 将您的变更推送到上游。将 main 替换为您的分支名称:

    git push origin main
  7. 创建合并请求。

当您向 Git LFS 跟踪添加新文件类型时,此类型的现有文件不会转换为 Git LFS。 只有在此类型文件开始跟踪后添加的文件才会被添加到 Git LFS。使用 git lfs migrate 将现有文件转换为使用 Git LFS。

停止跟踪文件

当您停止使用 Git LFS 跟踪文件时,文件仍保留在磁盘上,因为它仍然是您仓库历史的一部分。

要停止使用 Git LFS 跟踪文件:

  1. 运行 git lfs untrack 命令并提供文件路径:

    git lfs untrack doc/example.iso
  2. 使用 touch 命令将其转换回标准文件:

    touch doc/example.iso
  3. 跟踪文件的变更:

    git add .
  4. 提交并推送您的变更。

  5. 创建合并请求并请求审核。

  6. 将请求合并到目标分支。

如果您删除了由 Git LFS 跟踪的对象,但没有使用 git lfs untrack 跟踪它, 该对象在 git status 中会显示为 modified

停止跟踪单一类型的所有文件

要停止跟踪 Git LFS 中特定类型的所有文件:

  1. 运行 git lfs untrack 命令并提供要停止跟踪的文件类型:

    git lfs untrack "*.iso"
  2. 使用 touch 命令将文件转换回标准文件:

    touch *.iso
  3. 跟踪文件的变更:

    git add .
  4. 提交并推送您的变更。

  5. 创建合并请求并请求审核。

  6. 将请求合并到目标分支。

文件锁定

文件锁定有助于防止冲突,并确保一次只有一个人可以编辑文件。 这是一个不错的选择,适用于:

  • 无法合并的二进制文件。例如,设计文件和视频。
  • 编辑期间需要独占访问的文件。

先决条件:

  • 您必须已安装 Git LFS
  • 您必须拥有项目的 Maintainer 角色。

配置文件锁定

要为特定文件类型配置文件锁定:

  1. 使用带有 --lockable 选项的 git lfs track 命令。例如,配置 PNG 文件:

    git lfs track "*.png" --lockable

    此命令创建或更新您的 .gitattributes 文件,内容如下:

    *.png filter=lfs diff=lfs merge=lfs -text lockable
  2. .gitattributes 文件推送到远程仓库以使更改生效。

文件类型注册为可锁定后,它会自动被标记为只读。

不使用 LFS 配置文件锁定

要在不使用 Git LFS 的情况下将文件类型注册为可锁定:

  1. 手动编辑 .gitattributes 文件:

    *.pdf lockable
  2. .gitattributes 文件推送到远程仓库。

锁定和解锁文件

要使用独占文件锁定锁定或解锁文件:

  1. 在您的仓库目录中打开终端窗口。

  2. 运行以下命令之一:

    git lfs lock path/to/file.png
    git lfs unlock path/to/file.png
    git lfs unlock --id=123
    git lfs unlock --id=123 --force

查看锁定的文件

要查看锁定的文件:

  1. 在您的仓库中打开终端窗口。

  2. 运行以下命令:

    git lfs locks

    输出列出了锁定的文件、锁定它们的用户以及文件 ID。

在 GitLab UI 中:

  • 仓库文件树为 Git LFS 跟踪的文件显示 LFS 徽章。
  • 独占锁定的文件显示挂锁图标。 LFS 锁定的文件

您还可以从 GitLab UI 查看和删除现有锁

当您重命名独占锁定的文件时,锁定会丢失。您必须再次锁定它以保持锁定状态。

锁定和编辑文件

要锁定文件、编辑它,并可选地解锁它:

  1. 锁定文件:

    git lfs lock <file_path>
  2. 编辑文件。

  3. 可选。完成后解锁文件:

    git lfs unlock <file_path>

相关主题