极狐GitLab 提供文件管理功能,帮助您跟踪更改,与他人协作,以及高效管理大文件。

文件历史

使用 git log 查看文件的完整历史记录,了解其随时间的变化情况。文件历史记录显示以下信息:

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

例如,要查看根目录中 CONTRIBUTING.md 文件的 history 信息,运行以下命令:

git log CONTRIBUTING.md

示例输出:

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

    Update security contact and vulnerability disclosure info

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

    Fix link to Code of Conduct

    and condense some of the verbiage

检查文件的先前更改

使用 git blame 查看谁在何时对文件进行了最后更改。这有助于理解文件内容的上下文,解决冲突,并识别特定更改的责任人。

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

  1. 打开终端或命令提示符。
  2. 进入您的 Git 仓库。
  3. 运行以下命令:

    git blame README.md
    
  4. 要浏览结果页面,按 Space
  5. 要退出结果,按 Q

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

58233c4f1054c (Dan Rhodes           2022-05-13 07:02:20 +0000  1) ## Contributor License Agreement
b87768f435185 (Jamie Hurewitz       2017-10-31 18:09:23 +0000  2)
8e4c7f26317ff (Brett Walker         2023-10-20 17:53:25 +0000  3) Contributions to this repository are subject to the
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 文件。

    {{< alert type=”note” >}}

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

    {{< /alert >}}

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

    git commit -m "Add an ISO file and .gitattributes"
    
  6. 将您的更改推送到上游。将 main 替换为您的分支名称:

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

{{< alert type=”note” >}}

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

{{< /alert >}}

停止跟踪文件

当您停止使用 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. 将请求合并到目标分支中。

{{< alert type=”note” >}}

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

{{< /alert >}}

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

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

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

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

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

    git add .
    
  4. 提交并推送您的更改。
  5. 创建合并请求并请求审核。
  6. 将请求合并到目标分支中。

文件锁定

文件锁定帮助防止冲突,并确保一次只有一个人可以编辑文件。它是一个很好的选择:

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

前提条件:

  • 必须安装 Git LFS
  • 必须拥有项目的维护者角色。

配置文件锁定

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

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

    git lfs track "*.png" --lockable
    

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

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

{{< alert type=”note” >}}

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

{{< /alert >}}

无 LFS 配置文件锁定

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

  1. 手动编辑 .gitattributes 文件:

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

锁定和解锁文件

要通过独占文件锁定锁定或解锁文件:

  1. 在您的仓库目录中打开终端窗口。
  2. 运行以下命令之一:

    {{< tabs >}}

    {{< tab title=”锁定文件” >}}

    git lfs lock path/to/file.png
    

    {{< /tab >}}

    {{< tab title=”解锁文件” >}}

    git lfs unlock path/to/file.png
    

    {{< /tab >}}

    {{< tab title=”通过 ID 解锁文件” >}}

    git lfs unlock --id=123
    

    {{< /tab >}}

    {{< tab title=”强制解锁文件” >}}

    git lfs unlock --id=123 --force
    

    {{< /tab >}}

    {{< /tabs >}}

查看锁定文件

要查看锁定文件:

  1. 在您的仓库中打开终端窗口。
  2. 运行以下命令:

    git lfs locks
    

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

在极狐GitLab 界面中:

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

您还可以从极狐GitLab UI 查看并删除现有锁定

{{< alert type=”note” >}}

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

{{< /alert >}}

锁定并编辑文件

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

  1. 锁定文件:

    git lfs lock <file_path>
    
  2. 编辑文件。
  3. 可选项。完成后解锁文件:

    git lfs unlock <file_path>
    

相关主题