【问题标题】:Git lfs fetch from a local bare repo? Or other local copy of LFS files?Git lfs 从本地裸仓库中获取?还是 LFS 文件的其他本地副本?
【发布时间】:2019-11-22 03:56:54
【问题描述】:

我的小组正在与另一个小组合作开展一个项目,我们为合作建立了一个 GitHub 组织。现在合作结束了,我们即将从 GitHub 中删除该组织,我需要制作我团队工作的存储库的本地副本。

我的理解是git clone --bare <url> 是一个很好的方法,但是其中一些 repos 使用 LFS。我希望我可以按照here 的说明进行操作,但不是推送到新的远程,而是在本地克隆裸存储库。换句话说,我想这样做:

git clone --bare git@github.com:<organization>/somerepo.git
cd somerepo.git/
git lfs fetch --all
cd ..
git clone somerepo.git/
cd somerepo
# View source code, build, checkout other branches, etc.

我希望 LFS 能够直接从裸仓库中获取。不幸的是,正如我所担心的那样,它似乎不起作用。

有没有办法做到这一点,或者以其他方式获取存储库的本地工作副本——包含所有分支和标签以及所有大文件的本地副本?如果重要的话,我们不需要能够添加新的提交,只需检查不同的分支并访问所有文件。

【问题讨论】:

  • 你使用的是什么版本的 Git LFS? git lfs env 会告诉你的。
  • @bk2204 git-lfs/2.9.0 (GitHub; linux amd64; go 1.13.1),git 版本 2.17.1

标签: git github git-lfs


【解决方案1】:

使用 Git LFS 2.9.0,如果您将本地存储库指定为绝对文件 URL,则可以从本地存储库进行克隆。不支持本地路径,但它们将在 Git LFS 2.10.0 中。

此外,如果您使用的是 Windows,则目前需要使用 %3a 而不是冒号。你不是,但其他人是,这是问题的常见来源。这个要求也应该在 2.10.0 中消失。

因此,从本质上讲,您用于使用 Git 进行克隆的 URL 应该类似于以下内容:file:///home/nick/checkouts/somerepo.git

【讨论】:

    【解决方案2】:

    你应该更喜欢transfer your repository from your organisation to your user account

    如果转移的存储库使用 Git 大文件存储,所有 Git LFS 对象都会自动移动。
    此传输发生在后台,因此如果您有大量 Git LFS 对象或 Git LFS 对象本身很大,则传输可能需要一些时间。

    在转移使用 Git LFS 的存储库之前,请确保接收帐户有足够的数据包来存储您要转移的 Git LFS 对象。
    有关为用户帐户添加存储空间的更多信息,请参阅“Upgrading Git Large File Storage.

    【讨论】:

    • 这有两个问题:首先,它不是“我们的”存储库(两个组都贡献了),所以从另一个组中删除它并不是很好。我们只想要一个本地副本。其次,无论如何,我们组没有我们自己的组织帐户。
    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2014-08-22
    • 2020-01-03
    • 1970-01-01
    相关资源
    最近更新 更多