复制 git 存储库及其 GIT-LFS 设置

Posted

技术标签:

【中文标题】复制 git 存储库及其 GIT-LFS 设置【英文标题】:Duplicating a git repository and its GIT-LFS settings 【发布时间】:2016-11-13 21:47:37 【问题描述】:

我已经将一个 repo 复制到一个较新的 repo 中,但是在新 repo 上执行 git clone 时,它​​无法使用 LFS 指针下载文件,并且在使用 smudge 时出现错误... 例如...“下载对象时出错。在服务器上找不到对象”

步骤:

git clone --bare https://github.com/myuser/old-repo.git
cd old-repository.git
git push --mirror https://github.com/myuser/new-repo.git

git clone https://github.com/myuser/new-repo.git
[error.....git-lfs.exe smudge --- somefile.....Error downloading object]

分支和提交历史看起来不错,但 LFS 无法下载所需的文件。使用 git-lfs 时还有其他方法吗?

【问题讨论】:

你找到答案了吗?我正在尝试做同样的事情,目前看来我必须在保留项目历史或继续使用 LFS 之间做出选择。我宁愿不必做出这样的选择。 【参考方案1】:

我发现了这个链接:mirroring-a-repository-that-contains-git-large-file-storage-objects

它似乎完全回答了你的问题。 您错过的重要部分是git lfs push/pull

git clone --bare https://hostname/exampleuser/old-repository.git
cd old-repository.git
git lfs fetch --all
git push --mirror https://hostname/exampleuser/new-repository.git
git lfs push --all https://github.com/exampleuser/new-repository.git

【讨论】:

嗯,这让我觉得自己像个白痴,虽然它很简单,但绝对能完成我想做的事情。谢谢!【参考方案2】:

钩子和插件等是 repo-local 配置,如果您的 git-lfs 设置在某种程度上难以执行第二次提交 repo-setup 脚本来执行它并在第一次结帐时运行它。

【讨论】:

【参考方案3】:

您也可以使用 git 协议进行克隆,LFS 资产仍将通过 http 拉下,这可能会根据您的 LFS 服务器产生密码提示,因为预共享的 sshs 密钥不会用于 LFS 资产的身份验证。

 git clone git@github.com:username/my_lfs_repo.git destination_dir

【讨论】:

以上是关于复制 git 存储库及其 GIT-LFS 设置的主要内容,如果未能解决你的问题,请参考以下文章

Git-LFS:大文件也有了版本管理

Git-LFS:大文件也有了版本管理

在项目 GIT 存储库下添加 RestKit

在存储库中创建存储钩子

设置远程git存储库。

如何设置公共 git 存储库?