我最近使用 Gitlab CE 设置了一个小型 Linux 服务器,以便测试 Git LFS 用于游戏开发。为了感受 Gitlab 和 LFS 工作流程,我在一个流行的游戏引擎中制作了一个测试项目,其中包含许多大型二进制资产。快速编写后,.gitignore我们.gitattributes能够将存储库推送到我们的服务器并将其克隆到另一台 PC,并适当处理我们的大型资产文件!从工作流程的角度来看,它肯定比我们的旧设置更好 - 使用 Git 处理代码,使用 SVN 处理资产。
然而,我们注意到的问题之一是清理我们的测试项目并从我们的服务器中删除不需要的 LFS 文件。看起来 Gitlab 将每个项目的所有 LFS 文件存储在一个存储目录中(在我们的例子中,我相信是这样/mnt/storage/git-lfs-objects)。最重要的是,LFS 存储目录中的所有文件都有短的十六进制名称,无法分辨文件是什么或它们属于哪个项目。即使从 gitlab 中删除我们的测试项目后,我们注意到 lfs 对象仍然存在!
那么,有没有办法从 Gitlab 服务器的存储目录中删除不需要的 LFS 对象/文件?如果我们的 lfs 对象存储在每个项目的子目录中,这似乎会非常简单和直观。如果 lfs 对象至少保留部分原始文件名,那就更好了!我们确实有兴趣在未来的游戏开发项目中使用 git-lfs 和 gitlab,但我不太喜欢将来自不同项目的数据混合到一个庞大目录中的想法,以及可能会导致我们的服务器出现大量“数据泄漏”的情况难以识别的文件。
那么,我在这里缺少 git-lfs 或 Gitlab CE 的某些方面吗?我无法想象没有办法从服务器中删除不需要的 lfs 对象,但我运气不佳!
我最近将我的存储库中的视频从 480p 升级到了 720p。为此,我必须使用 git LFS,因为 720p 视频超过 100 MB(这是 Github 对文件存储的限制)。
在升级之前,我可以通过类似于以下的链接下载视频: https: //raw.githubusercontent.com/user/repo/master/videos/video.mp4
现在,此链接显示有关视频的 git LFS 相关信息(版本、oid 和大小)。我知道我可以使用另一个链接来下载视频,但我确实需要此链接来执行此操作(此 URL 已记录在我无法编辑的地方)。
有办法实现这一点吗?
使用GIT LFS时,.gitattributes控制哪些文件由 GIT LFS 管理,哪些文件不由 GIT LFS 管理。根据文档,在 GIT LFS 和常规GIT存储之间移动文件所需的只是更改.gitattributes.
.gitattributes我在 Bitbucket 存储库中进行了修改,但git lfs ls-files仍然列出了与以前相同的文件,包括不应再由 GIT LFS 管理的文件,不包括现在应由 GIT LFS 管理的文件。此外,提交和推动变革的速度.gitattributes快得令人怀疑。
是否有一个命令我可以(或必须)运行来更新所有文件的GIT LFS状态并将它们移动到正确的存储?
请问如何完全删除/卸载 git-lfs?我git lfs uninstall这样做返回了以下两行:
Hooks for this repository have been removed
Global Git LFS configuration has been removed
Run Code Online (Sandbox Code Playgroud)
但该lfs文件夹仍在下方.git,当我执行git status文件进出该文件夹时(.git/lfs/tmp)。在我看来,它git-lfs可能还没有被删除。可执行文件也已从我的 windows10 机器中的uninstall or change a program窗口中卸载control panel。
我有一个 Mercurial 存储库,其中包含 300 多个提交,其中还包含许多相对较大(例如 10+ MiB)的文件。我想将其转换为 Git 存储库,保留所有分支和合并,并使用 LFS 扩展来管理大文件。到目前为止,这是我的流程:
hg clone <URL>git initcd进入 git repo,然后使用hg-fast-export -r <hg-repo> -A <authors>. 此时,我有一个可用的存储库,但所有大文件仍然是索引的一部分。我想在其他任何内容“之前”插入一个新的提交.gitignore并插入.gitattributes。git checkout --orphan new-root && git rm -rf .git add * && git commit -m "Check in git metafiles"git checkout master && git rebase --root --onto new-root --preserve-merges这就是我被困住的地方。在将这个错误转储给我之前,rebase 得到了大约 10 次提交。
error: Your local changes to the …Run Code Online (Sandbox Code Playgroud) 我在尝试在 Azure Devops Pipeline 中签出具有 git-lfs 支持的存储库时遇到以下身份验证失败:
##[command]git -c http.<url>="AUTHORIZATION: bearer ***" lfs fetch origin 8d51d72484c1b19a2427ed9f7736d410e43a8a29
fetch: Fetching reference 8d51d72484c1b19a2427ed9f7736d410e43a8a29
fatal: could not read Password for '<url>': terminal prompts disabled
batch response: Git credentials for <url> not found.
error: failed to fetch some objects from '<url>/info/lfs'
##[warning]Git lfs fetch failed with exit code 2, back off 5.476 seconds before retry.
Run Code Online (Sandbox Code Playgroud)
该存储库也托管在 Azure DevOps 上,管道配置如下:
jobs:
...
steps:
- checkout: self
lfs: true
persistCredentials: true
Run Code Online (Sandbox Code Playgroud)
它在未启用 lfs 的情况下成功,但仅下载文件指针。它需要什么凭据,我如何提供它们?
到目前为止,我已经花了很多时间尝试使用 LFS 从命令行将 Neo4j 数据库上传到 GitHub。git init第一次创建本地存储库并提交后,我在推送时遇到了麻烦。
如果我没记错的话,只有一个超过100MB的文件,数据库核心文件之一。因此,由于只有一个大文件,我使用了该命令(路径中git lfs track "/data/databases/graph.db/neostore.transaction.db.0"带有或不带有首字母)。/我也尝试过.gitattributesgit lfs track "*.db"和git lfs track "/data/databases/graph.db/*"手动版本,但这些方法都不起作用。错误如下:

尽管有说明,但 LFS 似乎没有上传该文件。我的 LFS 版本是 2.7.2,所以这不是过时的版本。我缺少什么?
似乎 tortoise 支持 LFS,但文档中似乎缺少正确的工作实践。我需要支持我的团队,但我自己从不使用该工具。
使用 Tortoise 和为 LFS 配置的存储库的正确方法是什么?
我有一个包含几个大文件的 git repo。Git-LFS 已启用。我想将其中一个文件引入 Docker 容器。我已经在容器中安装了 git-lfs。到目前为止,我有:
RUN git clone --no-checkout --depth 1 https://github.com/my-org/my-data-repo.git
RUN cd my-data-repo
RUN git lfs pull -I data/my-large-file.csv
Run Code Online (Sandbox Code Playgroud)
该文件实际上已下载,但 Docker 构建过程失败,因为我收到以下错误:
Error updating the git index: (1/1), 90 MB | 4.8 MB/s
error: data/my-large-file.csv: cannot add to the index - missing --add option?
fatal: Unable to process path data/my-large-file.csv
Errors logged to .git/lfs/logs/20200709T142011.864584.log
Use `git lfs logs last` to view the log.
Run Code Online (Sandbox Code Playgroud)
如何在不抛出异常的情况下执行此操作,从而终止 Docker 构建过程?
我正在尝试通过以下方式从 git 克隆一个项目:
git clone link
Run Code Online (Sandbox Code Playgroud)
并收到了这条消息
remote: Enumerating objects: 24533, done.
remote: Counting objects: 100% (24533/24533), done.
remote: Compressing objects: 100% (5045/5045), done.
remote: Total 24533 (delta 15448), reused 24389 (delta 15306), pack-reused 0
Receiving objects: 100% (24533/24533), 75.12 MiB | 10.96 MiB/s, done.
Resolving deltas: 100% (15448/15448), done.
git-lfs filter-process: git-lfs: command not found
fatal: the remote end hung up unexpectedly
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and …Run Code Online (Sandbox Code Playgroud)