标签: git-lfs

如何将 git lfs 与“普通”git 一起使用

我将普通(非 lfs)存储库克隆到本地驱动器。现在我想向其中添加一个大于 100MB 的文件并将更改提交到存储库。我为此使用了以下命令:

git clone ....
Run Code Online (Sandbox Code Playgroud)

然后,我复制要添加到存储库的大小 >100MB 的文件。假设该文件的名称是“文件名”。

git lfs init
git lfs track "filename"
git add "filename"
git commit -m "commit message"
git push -u origin
Run Code Online (Sandbox Code Playgroud)

此操作失败,并显示文件大小错误消息,指出仅允许最大 100MB 的文件大小。

那么在这种情况下我该如何使用 git lfs 呢?

git git-lfs

7
推荐指数
2
解决办法
7779
查看次数

在 Amazon S3 上使用 Git LFS 的 Gitlab

既然 Gitlab 宣布了Git LFS 支持,我想问是否可以将 Git LFS 文件存储在 Amazon S3 上?我不想将存储库本身存储为 LFS 文件。

amazon-s3 gitlab git-lfs

7
推荐指数
2
解决办法
3152
查看次数

git-lfs中的多个文件版本

我正在尝试估计我的项目在GitHub上的存储需求,并对git-lfs如何存储文件的多个版本有一些疑问:

  • git-lfs是否存储文件的多个版本?
  • 如果是这样,对文件的每次更改都会导致整个文件被复制,还是仅存储差异?
  • 所有版本都会计入github上的配额吗?
  • 有什么方法可以控制保留多少个版本?

git github git-lfs

7
推荐指数
2
解决办法
796
查看次数

列出Git LFS未跟踪的文件

我正在用一大堆文件初始化一个新的Git仓库.回购正在使用Git LFS.我想确保在我第一次提交之前告诉LFS跟踪应该处理的所有文件.

我看到git lfs ls-files它将列出LFS跟踪的所有文件.但是,(a)我想要相反:repo中未被LFS跟踪(并且在其中.gitignore)的所有文件,以及(b)此命令仅在您提交文件后才有效.

有没有人有一些git-fu或Ubuntu-fu列出repo中所有未被忽略的文件,并且与.gitattributeGit LFS使用的各种文件中的轨道模式不匹配?


我最接近的是这个命令,它将repo中的文件列出超过100kB,然后手动扫描所有文件,并希望我用跟踪模式覆盖它们.

find . -type f -exec du -Sha -t 100000 {} +
Run Code Online (Sandbox Code Playgroud)

git git-lfs

7
推荐指数
2
解决办法
2119
查看次数

如何删除远程 git 存储库(如 VSTS)中的悬空提交

我一直在尝试通过将一些文件移动到 git LFS 来减小 Git 存储库的大小。再加上几个 100 个命令,这里我们的文件位于 git LFS 中,并且我的 git 提交中不再有这些文件的历史记录。

然而,每当我克隆存储库时,我仍然会下载大约 3GB 的对象。我通过在 Visual Studio Team Services 中创建一个新存储库来解决这个问题,在本地修剪和垃圾收集我的存储库,然后推送到那里后,它减少到 300mb。(在这篇文章中本地执行此操作的命令:Git:什么是悬空提交/blob 以及它们来自哪里?

但是我无法想象您总是必须删除/重新创建完整的存储库才能删除悬而未决的提交。

我还尝试过执行 git init,然后将其推送到现有存储库上,但它只会进一步增加对象数量。

对于也遇到类似问题的任何人,这些是我执行的用于创建新存储库而不需要悬空提交的命令,但是我想了解如何在现有存储库中执行此操作而不必删除它:

git clone https://avavedse.visualstudio.com/Test/_git/TestRepository
cd blahblah
git reflog expire --expire=now --all
git gc --prune=now
git remote add newrepo https://avavedse.visualstudio.com/Test/_git/TestRepositoryNewEdition
git push newrepo
Run Code Online (Sandbox Code Playgroud)

git visual-studio git-clone git-lfs azure-pipelines

7
推荐指数
2
解决办法
6014
查看次数

在使用 git-lfs 时有没有更好的方法来做`git subtree pull`?

我有两个存储库:parentchild. 他们都使用 git-lfs。我正在尝试child作为子树导入到parent.

parent目录中时,我尝试添加它并得到以下信息:

> git subtree add --prefix child [child_url]
git fetch [child_url] master
From [child_url]
* branch            master     -> FETCH_HEAD
Downloading [child_binary_file_path] (12.55 KB)
Error downloading object: [child_binary_file_path] ([sha])

Errors logged to .git\lfs\objects\logs\20170613T115607.1992713.log
Use `git lfs logs last` to view the log.
error: external filter git-lfs smudge -- %f failed 2
error: external filter git-lfs smudge -- %f failed
fatal: [child_binary_file_path]: smudge filter lfs failed
Run Code Online (Sandbox Code Playgroud)

在日志文件中,我看到

Error downloading …
Run Code Online (Sandbox Code Playgroud)

git git-subtree git-lfs

7
推荐指数
0
解决办法
830
查看次数

Git 格式补丁补丁不能跨不同存储库使用 LFS

我们目前正在从 CVS 迁移到 git 存储库。然而,一个团队大约一年前已经将 cvs2git 用于他们的存储库,因为他们的新功能需要大量具有历史记录的移动文件,而 CVS 在历史上并不擅长。然后,两个存储库都应该将 GIT-LFS 用于我们更大的签入源(例如,预先构建的外部库)

我们的想法是创建相同的起点,以便在迁移后将所有更改与历史记录合并到我们的存储库中。

所以我已经有了起点的精确复制品;这个想法是现在使用 git format-patch 创建所有补丁文件。现在大多数补丁都运行良好,问题仅在于使用 git lfs 的补丁。

一个例子:

diff --git a/Foo/bar/baz.zip b/Foo/bar/baz.zip
new file mode 100644
index 00000000000..6fce3f4bd05
--- /dev/null
+++ b/Foo/bar/baz.zip
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c90b657621e07fa40476186d94e2f6e06f055b49294b83ee976f73dfac120d86
+size 116056
-- 
2.13.2.windows.1
Run Code Online (Sandbox Code Playgroud)

当我尝试应用该补丁时,会发生以下情况:

$ git am ../patches/mypatch.patch
Applying: #someTfsId: myCommit
Downloading Foo/bar/baz.zip (113.34 KB)
Error downloading object: Foo/bar/baz.zip (c90b657): Smudge error: Error opening media file.: open D:\repositories\myrepo\.git\lfs\objects\c9\0b\c90b657621e07fa40476186d94e2f6e06f055b49294b83ee976f73dfac120d86: The system cannot find the file specified.

Errors logged …
Run Code Online (Sandbox Code Playgroud)

git format-patch git-lfs

7
推荐指数
1
解决办法
635
查看次数

无需结帐即可下载 Git LFS 文件

我正在寻找一种方法来下载我在 repo 中的一些 git LFS zip 文件,而不必签出整个存储库。

我尝试了以下方法:

curl -L <URL to the file RAW download on github page>

  • 这将下载一个 html 文件而不是实际文件。

curl -L <URL from .lfsconfig file + object ID from the file's pointer information in git repo>

  • 给出“未找到”错误

更多示例尝试:

curl  -L https://gitlfs.es.com/api/company/myrepository/content/framework/7d5dfcf764118df4867dc676b615e1ee4bf67e5b37fd56275f8845d
 
curl  -L https://gitlfs.es.com/api/company/myrepository/7d5dfcf764118df4d188d5838867dc676b615e1ee4bf67e5b37fd56275f8
 
curl  -L https://gitlfs.es.com/api/company/myrepository/sha256:7d5dfcf764118df4d188d5838867dc676b615e1ee4bf67e5b37fd56275f8845d
Run Code Online (Sandbox Code Playgroud)

以上似乎都不起作用

任何线索将不胜感激。

git git-lfs

7
推荐指数
1
解决办法
861
查看次数

从存储库中的“git-lfs”文件中检索原始文件

我找到了一个 git 存储库,其中包含我需要的一堆 *.png 文件。

然而,文件的原始格式使用 git lfs,如下所示:

version https://git-lfs.github.com/spec/v1
oid 
sha256:82247bedcaf9f441851f272ca2213a64b1b1084b13709eee02f185921b057efe
size 258233
Run Code Online (Sandbox Code Playgroud)

我尝试克隆存储库来查看图像,但得到以下信息:

error: external filter 'git-lfs filter-process' failed
fatal: "file_name".png: smudge filter lfs failed
warning: Clone succeeded, but checkout failed.
Run Code Online (Sandbox Code Playgroud)

“git pull”命令返回相同的错误:

error: external filter 'git-lfs filter-process' failed
fatal: "file_name".png: smudge filter lfs failed.
Run Code Online (Sandbox Code Playgroud)

“git lfs pull”命令只是返回“无法拉取”。

我最终希望将“file_name”.png 作为图像文件而不是 sha256 字符串查看。

git repository git-lfs

7
推荐指数
1
解决办法
5298
查看次数

使用新的 .gitattributes 文件迁移 Git-LFS

我有一个较大的(32k 次提交)git 存储库,我需要在其中重写一个分支中的历史记录以删除 .gitattributes 文件所描述的一堆大文件。这个分支完全是本地的,从来没有碰到过远程(实际上我们的远程因为历史上的大文件而拒绝了它)。

我知道以下命令将遍历分支的历史记录并删除所有.dll文件:

$ git lfs migrate import --include='*.dll'
Run Code Online (Sandbox Code Playgroud)

但是由于 .gitattributes 文件存在并且相当广泛,如果在创建分支时 .gitattributes 文件已经存在,那么是否有一个命令可以简单地重放为指针化这些文件所做的工作?

git git-lfs

7
推荐指数
1
解决办法
677
查看次数