【问题标题】:Gitlab repositories file content locationGitlab存储库文件内容位置
【发布时间】:2018-04-23 10:09:12
【问题描述】:

所以我正在尝试备份我的 gitlab 存储库 FILES。我查看了/var/opt/gitlab/git-data/repositories 位置并找到了存储库,但存储库的实际内容即:源代码不存在,只有配置文件、HEAD 文件信息、对象和 refs 文件夹等。

谁能告诉我实际文件存储在我的服务器上的什么位置?

gitlab的前端ui丢了,无法通过浏览器访问,需要从服务器下载源代码。

谢谢。

【问题讨论】:

  • 这些是 bare 存储库 - 要访问其中存储的文件,您需要在其他地方克隆该路径。
  • 我现在不能克隆任何东西,因为我的服务器有问题,这就是为什么我需要手动下载源代码文件。那么源代码文件存储在哪里呢?当然,它们必须存储在某个地方吗?还是我在这里遗漏了什么?

标签: git file ubuntu repository gitlab


【解决方案1】:

那些是 Git 内部形式的实际文件。

记住,Git 存储 每个 版本的 every 文件保存在 every 提交中。为了实现这个技巧,它将它们存储在对其他(非 Git)程序或(直接)对您无用的形式中。

要以对您和其他计算机程序有用的形式提取文件,您必须git checkout 一些特定提交。当你这样做时,你让 Git 填充 Git 所谓的 work-tree,这是你工作的地方。 Git 从您选择的一个特定的提交 填充这个工作树(使用 Git 的 index,我将在此提及但不解释,因为这有点复杂)。因此,此工作树的内容将取决于您选择的哪个提交。

--bare 存储库是(定义为)没有工作树的存储库,因此您无法在其中工作。这使得它适合接收传入的git push 请求,否则可能会干扰某人可能正在做的工作。没有工作树,就不可能有人在其中工作,所以没有工作可以被打扰。但这也意味着您不能选择一个提交并将其文件放在工作树中,因为没有工作树。

有一些方法可以从存储在裸存储库中的每个提交中查看或提取文件,但使用起来有点棘手。例如,git archive 可以将提交转换为可以在其他地方提取的存档(tar 或 zip)。请记住,当您提出要求时,您通常一次只会获得一个提交。

【讨论】:

  • 太棒了。现在可以工作了。非常感谢您花时间解释它,伙计:)
猜你喜欢
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 2021-03-13
  • 2017-05-18
  • 1970-01-01
  • 2013-09-01
  • 2010-11-07
  • 2021-09-17
相关资源
最近更新 更多