既然 Gitlab 宣布了Git LFS 支持,我想问是否可以将 Git LFS 文件存储在 Amazon S3 上?我不想将存储库本身存储为 LFS 文件。
我正在尝试估计我的项目在GitHub上的存储需求,并对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) 我有两个存储库:parent和child. 他们都使用 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) 我们目前正在从 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) 我正在寻找一种方法来下载我在 repo 中的一些 git LFS zip 文件,而不必签出整个存储库。
我尝试了以下方法:
curl -L <URL to the file RAW download on github page>
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)
以上似乎都不起作用
任何线索将不胜感激。
我有一个较大的(32k 次提交)git 存储库,我需要在其中重写一个分支中的历史记录以删除 .gitattributes 文件所描述的一堆大文件。这个分支完全是本地的,从来没有碰到过远程(实际上我们的远程因为历史上的大文件而拒绝了它)。
我知道以下命令将遍历分支的历史记录并删除所有.dll文件:
$ git lfs migrate import --include='*.dll'
Run Code Online (Sandbox Code Playgroud)
但是由于 .gitattributes 文件存在并且相当广泛,如果在创建分支时 .gitattributes 文件已经存在,那么是否有一个命令可以简单地重放为指针化这些文件所做的工作?
现在,github 向用户提供免费的私有仓库。因此,我创建了一个私有仓库并尝试使用Git LFS.
当我尝试将文件推送到远程时,出现此错误:
batch response: Git LFS is disabled for this repository.
batch response: Git LFS is disabled for this repository.
batch response: Git LFS is disabled for this repository.
Uploading LFS objects: 0% (0/100), 0 B | 0 B/s, done
batch response: Git LFS is disabled for this repository.
batch response: Git LFS is disabled for this repository.
batch response: Git LFS is disabled for this repository.
error: failed to push some refs to 'https://github.com/mrdulin/programming-ebooks.git'
Run Code Online (Sandbox Code Playgroud)
这是否意味着私人回购不支持 …
我在Node.js上完成了一个项目,该项目已经推送到GitHub,该项目有一个大于100MB的视频,需要Git LFS。Git LFS 成功推送到 GitHub,没有任何问题。
这个项目的第二阶段是在 Heroku 上托管,这就是我陷入困境的地方。我都尝试过:
heroku buildpacks:add https://github.com/BureauxLocaux/heroku-buildpack-git-lfs.git
Run Code Online (Sandbox Code Playgroud)
和
heroku buildpacks:add (name of the app given by heroku)/heroku-buildpack-git-lfs
Run Code Online (Sandbox Code Playgroud)
当它被推送时使用
git push heroku master --no-verify
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
remote: -----> Git LFS app detected
remote: Env var BL_BUILDPACK_GIT_LFS_REPO is not set
remote: ! Push rejected, failed to compile Git LFS app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to intense-journey-80070.
remote:
To https://git.heroku.com/intense-journey-89070.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed …Run Code Online (Sandbox Code Playgroud) 我下载并安装了 Git Large File Storage。现在我正在尝试从 github 中的现有存储库(不是我的)中获取 lfs 文件。我试过:
git lfs clone https://github.com/MKnoche/wiki_bias_embedding
然后在我本地刚刚克隆的 repo 中:
git lfs fetch --all
git lfs pull
我也试过同样的但没有“lfs”。
存储库已克隆,但对于所有 lfs 文件,始终显示此错误:
[301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575] Object does not exist on the server: [404] Object does not exist on the server
Run Code Online (Sandbox Code Playgroud)
进而:
error: failed to fetch some objects from 'https://github.com/MKnoche/wiki_bias_embedding.git/info/lfs'
Run Code Online (Sandbox Code Playgroud)
结果,不是真正的大文件,而是克隆它们在 GitHub 本身中可以看到的小指针。
同时这个命令:
git log --all -p -S 301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575
给出以下结果:
commit 36c7dba69de90d99f0c305fce13a598b8f06b443
Author: Markus Knoche <knoche.markus@googlemail.com>
Date: Wed Sep 11 18:01:25 2019 +0200
Add embeddings
diff --git …Run Code Online (Sandbox Code Playgroud) git-lfs ×10
git ×7
github ×4
amazon-s3 ×1
format-patch ×1
git-subtree ×1
gitlab ×1
heroku ×1
node.js ×1