极狐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
信息:
- 打开终端或命令提示符。
- 进入您的 Git 仓库。
-
运行以下命令:
git blame README.md
- 要浏览结果页面,按 Space。
- 要退出结果,按 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 LFS 的 CLI 扩展。
- 配置您的项目以使用 Git LFS。
- 安装 Git LFS 的预推送钩子。为此,请在您的仓库根目录中运行
git lfs install
。
添加并跟踪文件
要将大文件添加到您的 Git 仓库并使用 Git LFS 跟踪它:
-
配置跟踪某种类型的所有文件。将
iso
替换为您想要的文件类型:git lfs track "*.iso"
此命令创建一个
.gitattributes
文件,包含使用 Git LFS 处理所有 ISO 文件的说明。以下行将添加到您的.gitattributes
文件中:*.iso filter=lfs -text
- 将该类型的文件
.iso
添加到您的仓库。 -
跟踪对
.gitattributes
文件和.iso
文件的更改:git add .
-
确保您已添加这两个文件:
git status
.gitattributes
文件必须包含在您的提交中。如果不包含,Git 不会使用 Git LFS 跟踪 ISO 文件。{{< alert type=”note” >}}
确保您更改的文件未列在
.gitignore
文件中。如果它们是,Git 会在本地提交更改,但不会将其推送到您的上游仓库。{{< /alert >}}
-
将这两个文件提交到您本地的仓库副本:
git commit -m "Add an ISO file and .gitattributes"
-
将您的更改推送到上游。将
main
替换为您的分支名称:git push origin main
- 创建一个合并请求。
{{< alert type=”note” >}}
当您向 Git LFS 跟踪中添加新的文件类型时,现有类型的文件不会转换为 Git LFS。只有在您开始跟踪后添加的此类型文件才会添加到 Git LFS。使用 git lfs migrate
将现有文件转换为使用 Git LFS。
{{< /alert >}}
停止跟踪文件
当您停止使用 Git LFS 跟踪文件时,文件仍保留在磁盘上,因为它仍然是您仓库历史记录的一部分。
要停止使用 Git LFS 跟踪文件:
-
运行
git lfs untrack
命令并提供文件路径:git lfs untrack doc/example.iso
-
使用
touch
命令将其转换回标准文件:touch doc/example.iso
-
跟踪文件的更改:
git add .
- 提交并推送您的更改。
- 创建合并请求并请求审核。
- 将请求合并到目标分支中。
{{< alert type=”note” >}}
如果您删除了由 Git LFS 跟踪的对象,但没有使用 git lfs untrack
跟踪它,该对象在 git status
中显示为 modified
。
{{< /alert >}}
停止跟踪单一类型的所有文件
要停止在 Git LFS 中跟踪特定类型的所有文件:
-
运行
git lfs untrack
命令并提供要停止跟踪的文件类型:git lfs untrack "*.iso"
-
使用
touch
命令将文件转换回标准文件:touch *.iso
-
跟踪文件的更改:
git add .
- 提交并推送您的更改。
- 创建合并请求并请求审核。
- 将请求合并到目标分支中。
文件锁定
文件锁定帮助防止冲突,并确保一次只有一个人可以编辑文件。它是一个很好的选择:
- 无法合并的二进制文件。例如,设计文件和视频。
- 在编辑期间需要独占访问的文件。
前提条件:
- 必须安装 Git LFS。
- 必须拥有项目的维护者角色。
配置文件锁定
要为特定文件类型配置文件锁定:
-
使用
git lfs track
命令和--lockable
选项。例如,要配置 PNG 文件:git lfs track "*.png" --lockable
此命令创建或更新您的
.gitattributes
文件,内容如下:*.png filter=lfs diff=lfs merge=lfs -text lockable
-
将
.gitattributes
文件推送到远程仓库以使更改生效。
{{< alert type=”note” >}}
注册为可锁定的文件类型后,它会自动标记为只读。
{{< /alert >}}
无 LFS 配置文件锁定
要在不使用 Git LFS 的情况下注册文件类型为可锁定:
-
手动编辑
.gitattributes
文件:*.pdf lockable
-
将
.gitattributes
文件推送到远程仓库。
锁定和解锁文件
要通过独占文件锁定锁定或解锁文件:
- 在您的仓库目录中打开终端窗口。
-
运行以下命令之一:
{{< 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 >}}
查看锁定文件
要查看锁定文件:
- 在您的仓库中打开终端窗口。
-
运行以下命令:
git lfs locks
输出列出了锁定的文件、锁定它们的用户以及文件 ID。
在极狐GitLab 界面中:
- 仓库文件树为由 Git LFS 跟踪的文件显示 LFS 徽章。
- 独占锁定的文件显示一个挂锁图标。 LFS-锁定文件
您还可以从极狐GitLab UI 查看并删除现有锁定。
{{< alert type=”note” >}}
当您重命名一个独占锁定的文件时,锁定会丢失。您必须再次锁定它以保持锁定状态。
{{< /alert >}}
锁定并编辑文件
要锁定文件,编辑它,并可选择解锁它:
-
锁定文件:
git lfs lock <file_path>
- 编辑文件。
-
可选项。完成后解锁文件:
git lfs unlock <file_path>