Help us learn about your current experience with the documentation. Take the survey.

仓库

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

您的 repository 是您的 GitLab 项目的组成部分。您在仓库中存储代码,并使用版本控制跟踪其变更。

每个仓库都是 GitLab project 的一部分,不能脱离 GitLab 项目而存在。您的项目为仓库提供配置选项。

创建仓库

要创建仓库:

向仓库添加文件

您可以向仓库添加文件:

从 UI 添加文件

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

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

向仓库提交更改

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

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

克隆仓库

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

下载仓库源代码

要将仓库的源代码下载为压缩文件:

  1. 在左侧边栏,选择 Search or go to 并找到您的项目。

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

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

    • Source code

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

    • Directory

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

    • Artifacts

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

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

按 Git 版本查看仓库

要在特定的 Git 版本(如提交 SHA、分支名称或标签)查看仓库的所有文件和文件夹:

  1. 在左侧边栏,选择 Search or go to 并找到您的项目。
  2. 在顶部,选择打开 Select Git revision 下拉列表。
  3. 选择或搜索 Git 版本。

您也可以从 commits 页面查看和浏览特定 Git 版本的文件。

仓库语言

GitLab 检测默认分支中使用的编程语言。 此信息显示在 Project overview 页面上。

Repository Languages bar

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

添加仓库语言

并非所有文件都会在 Project overview 页面上被检测和列出。文档、 供应商代码和 大多数标记语言 被排除在外。 要查看支持的文件和语言列表,请参阅 supported data types

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

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

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

    *.proto linguist-detectable=true

此功能可能会占用过多的 CPU。如果您遇到问题,请参阅 Repository Languages: excessive CPU use 故障排除部分。

仓库贡献者分析

您可以查看显示选定项目分支随时间推移的提交数量的折线图, 以及显示每个项目成员提交数量的折线图。 更多信息,请参阅 Contributor analytics

仓库历史图表

仓库图表显示仓库网络的视觉历史,包括分支和合并。 此图表帮助您查看仓库中变更的流向。

要查看仓库历史图表,请转到项目的 Code > Repository graph

A graph showing the flow of commits in a repository.

仓库路径变更

当仓库路径变更时,GitLab 通过重定向处理从旧位置到新位置的转换。

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

  • 命名空间及其下所有内容的 URL(如项目)会 重定向到新的 URL。
  • 命名空间下项目的 Git 远程 URL 会重定向到新的远程 URL。当您推送或拉取到已 更改位置的仓库时,会显示更新远程的警告消息。自动化脚本或 Git 客户端在重命名后 仍能继续工作。
  • 只要原始路径没有被其他组、用户或项目占用,重定向就可用。
  • API redirects 可能需要显式跟随。

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

相关主题

故障排除

搜索推送到仓库的序列

如果某个提交似乎"丢失了",请搜索推送到仓库的序列。 这篇 StackOverflow 文章 描述了如何在没有强制推送的情况下陷入此状态。另一个原因可能是配置错误的 server hook,它在 git reset 操作中更改了 HEAD 引用。

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

使用 rails console, 以下示例检查最后 100 次推送并打印 commit_fromcommit_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 密钥后,请尝试再次克隆仓库。