文件管理
Git 提供文件管理功能,帮助您跟踪变更、与他人协作,并高效管理大文件。
文件历史
使用 git log 查看文件的完整历史记录,了解文件随时间的变化。
文件历史记录显示:
- 每次变更的作者。
- 每次修改的日期和时间。
- 每次提交中做出的具体变更。
例如,要查看 gitlab 仓库根目录中 CONTRIBUTING.md 文件的 history 信息,请运行:
git log CONTRIBUTING.md示例输出:
commit b350bf041666964c27834885e4590d90ad0bfe90
Author: Nick Malcolm <[email protected]>
Date: Fri Dec 8 13:43:07 2023 +1300
更新安全联系人和漏洞披露信息
commit 8e4c7f26317ff4689610bf9d031b4931aef54086
Author: Brett Walker <[email protected]>
Date: Fri Oct 20 17:53:25 2023 +0000
修复行为准则链接
并精简了一些措辞检查文件的先前变更
使用 git blame 查看谁对文件进行了最后一次修改以及修改时间。
这有助于理解文件内容的上下文、解决冲突,并确定特定变更的责任人。
如果您想查找本地目录中 README.md 文件的 blame 信息:
-
打开终端或命令提示符。
-
进入您的 Git 仓库。
-
运行以下命令:
git blame README.md -
要浏览结果页面,按 空格键。
-
要退出结果,按 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 LFS CLI 扩展 的适当版本。
- 将您的项目配置为使用 Git LFS。
- 安装 Git LFS pre-push hook。为此,在仓库根目录运行
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 文件。确保您正在更改的文件未列在
.gitignore文件中。 如果它们被列出,Git 会将变更提交到本地,但不会推送到您的上游仓库。 -
将两个文件提交到您的本地仓库副本:
git commit -m "添加一个 ISO 文件和 .gitattributes" -
将您的变更推送到上游。将
main替换为您的分支名称:git push origin main -
创建合并请求。
当您向 Git LFS 跟踪添加新文件类型时,此类型的现有文件不会转换为 Git LFS。
只有在此类型文件开始跟踪后添加的文件才会被添加到 Git LFS。使用 git lfs migrate 将现有文件转换为使用 Git LFS。
停止跟踪文件
当您停止使用 Git LFS 跟踪文件时,文件仍保留在磁盘上,因为它仍然是您仓库历史的一部分。
要停止使用 Git LFS 跟踪文件:
-
运行
git lfs untrack命令并提供文件路径:git lfs untrack doc/example.iso -
使用
touch命令将其转换回标准文件:touch doc/example.iso -
跟踪文件的变更:
git add . -
提交并推送您的变更。
-
创建合并请求并请求审核。
-
将请求合并到目标分支。
如果您删除了由 Git LFS 跟踪的对象,但没有使用 git lfs untrack 跟踪它,
该对象在 git status 中会显示为 modified。
停止跟踪单一类型的所有文件
要停止跟踪 Git LFS 中特定类型的所有文件:
-
运行
git lfs untrack命令并提供要停止跟踪的文件类型:git lfs untrack "*.iso" -
使用
touch命令将文件转换回标准文件:touch *.iso -
跟踪文件的变更:
git add . -
提交并推送您的变更。
-
创建合并请求并请求审核。
-
将请求合并到目标分支。
文件锁定
文件锁定有助于防止冲突,并确保一次只有一个人可以编辑文件。 这是一个不错的选择,适用于:
- 无法合并的二进制文件。例如,设计文件和视频。
- 编辑期间需要独占访问的文件。
先决条件:
- 您必须已安装 Git LFS。
- 您必须拥有项目的 Maintainer 角色。
配置文件锁定
要为特定文件类型配置文件锁定:
-
使用带有
--lockable选项的git lfs track命令。例如,配置 PNG 文件:git lfs track "*.png" --lockable此命令创建或更新您的
.gitattributes文件,内容如下:*.png filter=lfs diff=lfs merge=lfs -text lockable -
将
.gitattributes文件推送到远程仓库以使更改生效。
文件类型注册为可锁定后,它会自动被标记为只读。
不使用 LFS 配置文件锁定
要在不使用 Git LFS 的情况下将文件类型注册为可锁定:
-
手动编辑
.gitattributes文件:*.pdf lockable -
将
.gitattributes文件推送到远程仓库。
锁定和解锁文件
要使用独占文件锁定锁定或解锁文件:
-
在您的仓库目录中打开终端窗口。
-
运行以下命令之一:
git lfs lock path/to/file.pnggit lfs unlock path/to/file.pnggit lfs unlock --id=123git lfs unlock --id=123 --force
查看锁定的文件
要查看锁定的文件:
-
在您的仓库中打开终端窗口。
-
运行以下命令:
git lfs locks输出列出了锁定的文件、锁定它们的用户以及文件 ID。
在 GitLab UI 中:
- 仓库文件树为 Git LFS 跟踪的文件显示 LFS 徽章。
- 独占锁定的文件显示挂锁图标。 LFS 锁定的文件
您还可以从 GitLab UI 查看和删除现有锁。
当您重命名独占锁定的文件时,锁定会丢失。您必须再次锁定它以保持锁定状态。
锁定和编辑文件
要锁定文件、编辑它,并可选地解锁它:
-
锁定文件:
git lfs lock <file_path> -
编辑文件。
-
可选。完成后解锁文件:
git lfs unlock <file_path>