仓库 所有级别
一个仓库是您存储代码、进行更改并使用版本控制跟踪更改的地方。每个项目包含一个仓库,且仓库不能独立于项目存在。
创建仓库
要创建一个仓库:
向仓库添加文件
您可以向仓库添加文件:
从 UI 添加文件
要从极狐GitLab UI 添加或上传文件:
- 在左侧边栏,选择 搜索或前往 并找到您的项目。
- 转到您要上传文件的目录。
- 在目录名称旁边,选择加号图标 () > 上传文件。
- 拖放或上传您的文件。
- 输入提交消息。
- 可选。在 目标分支 中,输入一个不是您仓库默认分支的分支名称,以创建一个合并请求。
- 选择 上传文件。
提交更改到仓库
您可以将更改提交到仓库中的分支。当您使用命令行时,使用 git commit
。
有关如何使用提交来改进沟通和协作、触发或跳过流水线以及还原更改的信息,请参阅提交。
克隆仓库
您可以使用以下方式克隆仓库:
- 命令行:
- 极狐GitLab UI:
下载仓库源代码
当您下载仓库的源代码时,它会被压缩并保存为归档文件。要下载存储在仓库中的源代码:
- 在左侧边栏,选择 搜索或前往 并找到您的项目。
- 在文件列表上方,选择 代码。
-
从选项中选择您要下载的文件:
-
源代码:
从您正在查看的当前分支下载源代码。可用扩展名:
zip
、tar
、tar.gz
和tar.bz2
。 -
目录:
下载特定目录。仅在您查看子目录时可见。可用扩展名:
zip
、tar
、tar.gz
和tar.bz2
。 -
工件:
下载最新 CI/CD 作业的工件。
-
生成的归档文件的校验和可能会改变,即使仓库本身没有变化。例如,如果 Git 或极狐GitLab 使用的第三方库发生变化,就会出现这种情况。
仓库语言
极狐GitLab 检测默认分支中使用的编程语言。此信息显示在 项目概览 页面上。
当添加新文件时,此信息可能需要最多五分钟才能更新。
添加仓库语言
并非所有文件都会在 项目概览 页面上被检测和列出。文档、供应商代码和大多数标记语言被排除在外。要查看支持的文件和语言列表,请参阅支持的数据类型。
要更改此行为并在默认设置中包含其他文件类型:
- 在您的仓库根目录中创建一个名为
.gitattributes
的文件。 -
添加一行告诉极狐GitLab 包含特定文件类型。例如,要启用
.proto
文件,添加以下内容:*.proto linguist-detectable=true
此功能可能会使用过多的 CPU。如果您遇到问题,请参阅仓库语言:过度使用 CPU故障排除部分。
仓库贡献者分析
您可以查看所选项目分支随时间推移的提交数量折线图,以及每个项目成员的提交数量折线图。 有关更多信息,请参阅贡献者分析。
仓库历史图
仓库图显示了仓库网络的可视化历史,包括分支和合并。此图可以帮助您可视化仓库中使用的 Git 流程策略。
要查看仓库历史图,请转到项目的 代码 > 仓库图。
仓库路径更改
当仓库路径更改时,极狐GitLab 会通过重定向处理从旧位置到新位置的过渡。
- 命名空间及其下的所有项目的 URL 都会重定向到新 URL。
- 命名空间下项目的 Git 远程 URL 会重定向到新的远程 URL。当您推送或拉取到已更改位置的仓库时,会显示更新远程 URL 的警告消息。重命名后,自动化脚本或 Git 客户端仍然可以正常工作。
- 只要原始路径未被其他组、用户或项目占用,重定向就会一直有效。
- API 重定向可能需要显式跟随。
更改路径后,您必须更新以下资源中的现有 URL:
-
Include 语句(除了
include:component
),否则流水线会因语法错误而失败。CI/CD 组件引用可以跟随重定向。 - 使用编码路径而不是数字命名空间和项目 ID 的命名空间 API 调用。
- Docker 镜像引用。
- 指定项目或命名空间的变量。
相关主题
故障排除
搜索推送到仓库的顺序
如果某个提交似乎“丢失”了,请搜索推送到仓库的顺序。
这篇 StackOverflow 文章描述了在没有强制推送的情况下,您如何进入这种状态。另一个原因可能是配置错误的
服务器钩子在 git reset
操作中更改了 HEAD 引用。
如果您查看目标分支的示例代码输出,在逐步查看输出时,您会看到 from/to 提交的连续性。每个新推送的 commit_from
应等于前一个推送的 commit_to
。该序列中的中断表示一个或多个提交已从仓库历史记录中“丢失”。
使用 rails 控制台,
以下示例检查最后 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
的错误。
要解决此问题,请创建一个符合 支持的 SSH 密钥类型指南的新 SSH 密钥对。生成 支持的 SSH 密钥后,请再次尝试克隆仓库。