我正在利用git lfsgithub 存储库来存储大文件。唯一的问题是有配额git lfs;具体来说,您每月只能存储 1 GB,并且只能流式传输(下载)1 GB。用完后,您必须支付 5 美元才能再获得 5 GB。这可能会变得昂贵。
我有一台旧电脑,可以启动 Linux 并进行端口转发。
有谁知道如何git lfs在家中设置服务器而不是使用内置于 CPU 的 Github lfs 吗?
我们已经git-lfs成功使用了几年。但是,我们会定期添加包含在git-lfs. 我们转移到的最新文件类型之一git-lfs是我们的所有*.csv文件。
问题是我们*.csv的历史记录中有几个非常大的文件在初始迁移中没有被捕获,我也需要将这些文件移动到。git-lfs(我们正在从 BitBucket 迁移到 GitHub,GitHub 对允许的最大文件大小有更严格的规则,因此我需要确保所有旧的大文件也都打开git-lfs。)
最明显的方法是这样的:
git lfs migrate import --everything --include="*.csv"
当我运行该命令时,它似乎成功了。它重写历史,输出看起来像这样:
PS E:\source\swyfft_web_ken> git lfs migrate import --everything --include="*.csv"
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (131623/131623), done.
development 1b042eeebfb346af8f7e90d1f6c7b6abfc64d014 -> 1b042eeebfb346af8f7e90d1f6c7
b6abfc64d014
feature/ks/20200205_ImsWebServicesV2 e2b5b267d5215ef48d5ef4e3f0924613c6076cd7 -> e2b5b267d5215ef48d5ef4e3f092
4613c6076cd7
master 2029338210697c795a536faa9dd4c141c6edd6c2 -> 2029338210697c795a536faa9dd4
c141c6edd6c2
1.0 752143ee1b87020e9b285886b3986703d6c74a38 -> 752143ee1b87020e9b285886b398
6703d6c74a38
1.1 5fefda3de45651107218a953e789ea5121002756 -> 5fefda3de45651107218a953e789
ea5121002756
1.2 30f87f08e672d10de0029985ad5acc1bf5a82457 -> 30f87f08e672d10de0029985ad5a
cc1bf5a82457 …Run Code Online (Sandbox Code Playgroud) 我克隆了一个具有 10 多个远程分支和 20 多个标签的存储库。
克隆的存储库具有默认的分支主结帐。
当我运行 git lfs migrate 时,它迁移了所有标签,但仅迁移了 master 分支,其他远程分支未迁移。这是预期的行为吗?在运行“git lfs migrate import --everything --include =“*.bin””之前我是否需要签出所有远程分支?
LFS版本是3.1.4
为了将我的 Git 存储库迁移到 Git LFS,我执行了以下命令:
> git lfs migrate import --everything --include="*.dll"
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (9376/9376), done.
{long list of branch names and hashes}
migrate: Updating refs: ..., done.
migrate: checkout: ..., done.
Run Code Online (Sandbox Code Playgroud)
然后再次使用“info”选项:
> git lfs migrate info --everything --include="*.dll"
migrate: Sorting commits: ..., done.
migrate: Examining commits: 100% (13199/13199), done.
*.dll 451 MB 380/380 files(s) 100%
Run Code Online (Sandbox Code Playgroud)
这是否意味着历史上451MB的dll文件被转换为LFS存储?或者他们不是?如果我在没有 --include 选项的情况下获取信息,它会显示以下内容:
> git lfs migrate info --everything
migrate: Sorting commits: ..., done.
migrate: Examining …Run Code Online (Sandbox Code Playgroud) 尝试将存储库(包括历史记录)迁移到 Git LFS 之外。
我在测试存储库上运行git lfs migrate export --include="*" --everything(此处提到),但它没有按预期工作,并留下了 LFS 指针文件,而不是将它们全部转换为对象。
我尝试了替代方法,遵循此。不幸的是它仍然留下了指针文件,所以我将它与this结合起来。
最后,我什至一起运行了所有命令:
git lfs uninstall
git filter-branch -f --prune-empty --tree-filter '
git lfs fetch
git lfs checkout
git lfs ls-files | cut -d " " -f 3 | xargs touch
git lfs ls-files | cut -d " " -f 3 | xargs git rm --cached
git rm -f .gitattributes
git lfs ls-files | cut -d " " -f 3 | …Run Code Online (Sandbox Code Playgroud) 我有一个 git repo,其中许多文件应该是 lfs,因为它们大于 100M。
环顾四周,我无法找到一步一步的指南来解释如何迁移具有许多分支的真实现有存储库以及 lfs 文件在子目录中的位置。
就我而言,大文件分布在存储库中,如下所示:
code/track1/file000.pkl
code/track3/dat000.bin
code/track4/pip000.pkl
code/subcode/track5/pip000.pkl
code/subcode/track5/pop000.model
Run Code Online (Sandbox Code Playgroud)
我想将 git 项目转换为 git lfs 只需使用git lfs migrate:
git lfs install
git lfs migrate import --include="*.pkl"
git lfs migrate import --include="*.bin"
git lfs migrate import --include="*.model"
git commit -m "migrating models"
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用。
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
我想转换所有的存储库,我的意思是所有文件、历史记录以及所有现有分支。
换句话说,git lfs migrate现在看起来很稳定,但用户不太友好。
跑步git lfs track "*.pkl"似乎有效果:
modified: code/track1/file000.pkl
modified: code/track4/pip000.pkl
modified: code/subcode/track5/pip000.pkl
Run Code Online (Sandbox Code Playgroud)
但接下来该怎么办。我看到它将git lfs track开始跟踪新文件或已签入存储库的现有文件。
但历史又如何呢?我很挣扎,因为我不想最终得到一个混乱的存储库,我必须从头开始重新导入或者必须处理过滤器分支。
我在我的存储库上执行了以下操作,现在所有文件都已被此类语句替换(我已将第二行中的值替换为 *s):
version https://git-lfs.github.com/spec/v1
oid sha256:8*****************************************93
size 1003203
Run Code Online (Sandbox Code Playgroud)
lfs 命令运行:
git lfs install
git lfs track "*.xyz"
git lfs migrate import
Run Code Online (Sandbox Code Playgroud)
现在,包括 xyz 文件在内的所有文件都无法读取。我怎样才能撤消这些?
我有一个启用了 git-lfs 的现有存储库(在 GitHub 上),其中包含 1GB 的文件。出于带宽原因,我想停止使用 GitHub 并开始使用公司网络上托管的 LFS 存储库。有谁知道如何在 git lfs 存储库之间迁移?
我可以转换为“没有 git-lfs 的普通存储库”,然后返回 git-lfs,但必须有一种方法可以做到这一点,而无需重写历史记录,只需复制文件,对吗?
谢谢!
我们有一个本地 git 服务器,带有 LFS 文件。我们计划将所有内容迁移到 MS Azure DevOps 上。经过一些研究,我读到建议进行“镜像”克隆,以拥有所有内容(至少是标签):
git 克隆 --mirror
然后,由于我有一些 LFS 文件,我也想获取它们:
git lfs fetch --all
但我收到这个错误:
Error: Failed to call git rev-parse --git-dir --show-toplevel: "fatal: this operation must be run in a work tree\n"
Not in a git repository.
Run Code Online (Sandbox Code Playgroud)
对于我正在阅读的内容, git lfs fetch 在存储库上不起作用bare(并不是说我知道这是什么,但我认为它与该--mirror选项有关。
所以我的问题是:我应该怎么做才能将所有内容转移到这个新存储库?(此后本地服务器将关闭)。
谢谢