仓库

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

仓库是您存储代码、进行更改并使用版本控制跟踪更改的地方。每个 项目 都包含一个仓库,仓库不能在没有项目的情况下存在。

创建仓库#

要创建仓库:

向仓库添加文件#

您可以向仓库添加文件:

从 UI 添加文件#

要从极狐 GitLab UI 添加或上传文件:

  1. 在左侧边栏,选择 搜索或转到 并找到您的项目。
  2. 转到要上传文件的目录。
  3. 在目录名称旁边,选择加号图标 () > 上传文件
  4. 拖放或上传您的文件。
  5. 输入提交信息。
  6. 可选。要使用更改创建合并请求,请在 目标分支 中输入一个不是您仓库 默认分支 的分支名称。
  7. 选择 上传文件

提交更改到仓库#

您可以将更改提交到仓库中的分支。当您使用命令行时,使用 git commit

有关如何使用提交改进沟通和协作、触发或跳过流水线以及还原更改的信息,请参阅 提交

克隆仓库#

您可以使用以下方式克隆仓库:

下载仓库源代码#

当您下载仓库的源代码时,它会被压缩并保存为归档文件。要下载存储在仓库中的源代码:

  1. 在左侧边栏,选择 搜索或转到 并找到您的项目。

  2. 在文件列表上方,选择 代码

  3. 从选项中选择要下载的文件:

    • 源代码:

      从您正在查看的当前分支下载源代码。可用扩展名:ziptartar.gztar.bz2

    • 目录:

      下载特定目录。仅在查看子目录时可见。可用扩展名:ziptartar.gztar.bz2

    • 产物:

      从最新的 CI/CD 作业下载产物。

生成的归档文件的校验和即使仓库本身没有更改也可能发生变化。例如,如果 Git 或极狐 GitLab 使用的第三方库发生变化,就会发生这种情况。

仓库语言#

极狐 GitLab 检测默认分支中使用的编程语言。此信息显示在 项目概览 页面上。

仓库语言条

添加新文件时,此信息最多可能需要五分钟才能更新。

添加仓库语言#

并非所有文件都在 项目概览 页面上检测和列出。文档、供应商代码和 大多数标记语言 被排除在外。

要更改此行为并在默认设置中包含其他文件类型:

  1. 在您的仓库的根目录中创建一个名为 .gitattributes 的文件。

  2. 添加一行,告诉极狐 GitLab 包含特定的文件类型。例如,要启用 .proto 文件,请添加以下内容:

    plaintext
    *.proto linguist-detectable=true

此功能可能会使用过多的 CPU。如果您遇到问题,请参阅 仓库语言:过度 CPU 使用 故障排除部分。

仓库贡献者分析#

您可以查看所选项目分支随时间变化的提交数量折线图,以及每个项目成员的提交数量折线图。有关更多信息,请参阅 贡献者分析

仓库历史图#

仓库图显示了仓库网络的可视化历史,包括分支和合并。此图帮助您查看仓库中的更改流。

要查看仓库历史图,请转到项目的 代码 > 仓库图

显示仓库中提交流的图表。

仓库路径更改#

当仓库路径更改时,极狐 GitLab 通过重定向处理从旧位置到新位置的过渡。

当您 重命名用户更改群组路径重命名仓库 时:

  • 命名空间及其下的一切(如项目)的 URL 被重定向到新 URL。
  • 命名空间下项目的 Git 远程 URL 重定向到新的远程 URL。当您推送或拉取已更改位置的仓库时,会显示更新远程的警告信息。重命名后自动化脚本或 Git 客户端继续工作。
  • 只要原始路径未被其他群组、用户或项目占用,重定向就可用。
  • API 重定向 可能需要明确遵循。

更改路径后,您必须更新以下资源中的现有 URL:

故障排除#

搜索推送到仓库的顺序#

如果提交似乎已经“丢失”,请搜索推送到仓库的顺序。另一个原因可能是配置错误的 服务器钩子,它在 git reset 操作中更改了 HEAD 引用。

如果您查看目标分支的以下示例代码的输出,您会在逐步查看输出时看到来自/至提交的不连续性。每个新推送的 commit_from 应等于前一个推送的 commit_to。此序列中的中断表明一个或多个提交已从仓库历史中“丢失”。

使用 rails 控制台,以下示例检查最近的 100 次推送并打印 commit_fromcommit_to 条目:

ruby
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 行的序列中断:

plaintext
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 密钥后,请尝试重新克隆仓库。