仓库
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
您的 repository 是您的 GitLab 项目的组成部分。您在仓库中存储代码,并使用版本控制跟踪其变更。
每个仓库都是 GitLab project 的一部分,不能脱离 GitLab 项目而存在。您的项目为仓库提供配置选项。
创建仓库
要创建仓库:
向仓库添加文件
您可以向仓库添加文件:
从 UI 添加文件
要从 GitLab UI 添加或上传文件:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 转到要上传文件的目录。
- 在目录名称旁边,选择加号图标 ( ) > Upload file。
- 拖放或上传您的文件。
- 输入提交信息。
- 可选。要使用您的更改创建合并请求,在 Target branch 中输入一个不是您仓库 default branch 的分支名称。
- 选择 Upload file。
向仓库提交更改
您可以将更改提交到仓库中的分支。当使用命令行时,请使用 git commit。
有关如何使用提交来改善沟通和协作、触发或跳过流水线以及还原更改的信息,请参阅 commits。
克隆仓库
您可以使用以下方式克隆仓库:
- 命令行:
- GitLab UI:
下载仓库源代码
要将仓库的源代码下载为压缩文件:
-
在左侧边栏,选择 Search or go to 并找到您的项目。
-
在文件列表上方,选择 Code。
-
从选项中,选择您要下载的文件:
-
Source code:
从您当前查看的分支下载源代码。 可用扩展名:
zip、tar、tar.gz和tar.bz2。 -
Directory:
下载特定目录。仅在查看子目录时可见。 可用扩展名:
zip、tar、tar.gz和tar.bz2。 -
Artifacts:
下载最新 CI/CD 作业的产物。
-
即使仓库本身没有变更,生成存档的校验和也可能发生变化。例如,如果 Git 或 GitLab 使用的第三方库发生更改,就会出现这种情况。
按 Git 版本查看仓库
要在特定的 Git 版本(如提交 SHA、分支名称或标签)查看仓库的所有文件和文件夹:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 在顶部,选择打开 Select Git revision 下拉列表。
- 选择或搜索 Git 版本。
您也可以从 commits 页面查看和浏览特定 Git 版本的文件。
仓库语言
GitLab 检测默认分支中使用的编程语言。 此信息显示在 Project overview 页面上。
添加新文件时,此信息可能需要最多五分钟才能更新。
添加仓库语言
并非所有文件都会在 Project overview 页面上被检测和列出。文档、 供应商代码和 大多数标记语言 被排除在外。 要查看支持的文件和语言列表,请参阅 supported data types。
要更改此行为并在默认设置中包含其他文件类型:
-
在仓库的根目录中,创建一个名为
.gitattributes的文件。 -
添加一行告诉 GitLab 包含特定文件类型的行。例如, 要启用
.proto文件,请添加以下内容:*.proto linguist-detectable=true
此功能可能会占用过多的 CPU。如果您遇到问题,请参阅 Repository Languages: excessive CPU use 故障排除部分。
仓库贡献者分析
您可以查看显示选定项目分支随时间推移的提交数量的折线图, 以及显示每个项目成员提交数量的折线图。 更多信息,请参阅 Contributor analytics。
仓库历史图表
仓库图表显示仓库网络的视觉历史,包括分支和合并。 此图表帮助您查看仓库中变更的流向。
要查看仓库历史图表,请转到项目的 Code > Repository graph。
仓库路径变更
当仓库路径变更时,GitLab 通过重定向处理从旧位置到新位置的转换。
- 命名空间及其下所有内容的 URL(如项目)会 重定向到新的 URL。
- 命名空间下项目的 Git 远程 URL 会重定向到新的远程 URL。当您推送或拉取到已 更改位置的仓库时,会显示更新远程的警告消息。自动化脚本或 Git 客户端在重命名后 仍能继续工作。
- 只要原始路径没有被其他组、用户或项目占用,重定向就可用。
- API redirects 可能需要显式跟随。
更改路径后,您必须在以下资源中更新现有 URL:
- Include statements 除了
include:component, 否则流水线会因语法错误而失败。CI/CD 组件引用可以跟随重定向。 - 使用 encoded path 而不是数字命名空间和项目 ID 的命名空间 API 调用。
- Docker image references。
- 指定项目或命名空间的变量。
- CODEOWNERS file。
相关主题
- GitLab Workflow extension for VS Code
- Lock files and prevent change conflicts
- Repository API
- Files
- Branches
- Create a directory
- Find file history
- Identify changes by line (Git blame)
故障排除
搜索推送到仓库的序列
如果某个提交似乎"丢失了",请搜索推送到仓库的序列。
这篇 StackOverflow 文章
描述了如何在没有强制推送的情况下陷入此状态。另一个原因可能是配置错误的
server hook,它在 git reset 操作中更改了 HEAD 引用。
如果您查看下面示例代码针对目标分支的输出,您
会在逐步查看输出时看到 from/to 提交的不连续性。
每个新推送的 commit_from 应该等于前一个推送的 commit_to。
该序列的中断表明一个或多个提交已从仓库历史中"丢失"。
使用 rails console,
以下示例检查最后 100 次推送并打印 commit_from 和 commit_to 条目:
p = Project.find_by_full_path('project/path')
p.events.pushed_action.last(100).each do |e|
printf "%-20.20s %8s...%8s (%s)", e.push_event_payload[:ref], e.push_event_payload[:commit_from], e.push_event_payload[:commit_to], e.author.try(:username)
end ; nil显示在第 4 行序列中断的示例输出:
master f21b07713251e04575908149bdc8ac1f105aabc3...6bc56c1f46244792222f6c85b11606933af171de root
master 6bc56c1f46244792222f6c85b11606933af171de...132da6064f5d3453d445fd7cb452b148705bdc1b root
master 132da6064f5d3453d445fd7cb452b148705bdc1b...a62e1e693150a2e46ace0ce696cd4a52856dfa65 root
master 58b07b719a4b0039fec810efa52f479ba1b84756...f05321a5b5728bd8a89b7bf530aa44043c951dce root
master f05321a5b5728bd8a89b7bf530aa44043c951dce...7d02e575fd790e76a3284ee435368279a5eb3773 root错误:Xcode 无法克隆仓库
GitLab 提供了 限制允许的 SSH 密钥列表 的选项。
如果您的 SSH 密钥不在允许列表中,您可能会遇到类似
The repository rejected the provided credentials 的错误。
要解决此问题,请创建一个符合 supported SSH key types 指南的新 SSH 密钥对。生成 支持的 SSH 密钥后,请尝试再次克隆仓库。