我在 Bitbucket 中有一个 GIT 存储库,它使用 GIT-LFS:
每当我尝试克隆存储库时,git-lfs.exe都会遇到以下命令行:
"C:\Program Files\Git\mingw64\bin\git-lfs.exe" filter-process
Run Code Online (Sandbox Code Playgroud)
在以下所有情况下都会发生这种情况:
git clone https://...)git submodule update)git reset --hard使用 GIT-LFS 在存储库的克隆中运行(然后缺少文件和更改)。我在用
$ git-lfs --version
git-lfs/3.1.2 (GitHub; windows amd64; go 1.17.6)
$ git --version
git version 2.35.1.windows.2
Run Code Online (Sandbox Code Playgroud)
并且也遇到了同样的问题
$ git-lfs --version
git-lfs/2.12.1 (GitHub; windows amd64; go 1.14.10; git 85b28e06)
Run Code Online (Sandbox Code Playgroud)
我还有其他几个工作目录,其中同一个存储库是一个子模块,并且git submodule update在这些目录中运行正常(但没有任何更改,因此该命令实际上不必执行任何操作)。
更新:按照此答案中的建议启用跟踪并等待足够长的时间后,结果发现 GIT LFS 在从 LFS 下载实际文件时“卡住”,这似乎非常慢(尽管文件的总大小是仅约 1 GB。文件日期显示总下载时间超过 1.5 小时!)。它最终完成,所有文件都在它们应该在的地方。这可能是与 Bitbucket 相关的问题。关于可能导致此问题的任何建议(除了联系 Atlassian 支持人员之外)?
(任何有关如何调试此问题的建议也是有效的答案)
我有一个受git lfs控制的文件,我想将其从同一个 git 存储库中的一个目录移动到另一个目录。然而,git mv foo/bar baz/适用于常规文件,但不会带来 LFS 状态,因此我无法使用它。
即,我的想法是:
\ngit mv foo/biglfs.file bar/git lfs track *.filegit add bar/.gitattributesgit commit但我不认为\xe2\x80\x99t 会正确更新LFS 文件指针,而且我认为第一个语句实际上会biglfs.file直接添加到存储库中,这是不可取的。
我想我必须手动删除受git lfs控制的文件,移动文件,然后重新添加它。但这让我觉得工作量很大,所以肯定有一种简单直接的方法来做到这一点吗?
我有一个托管在VSTS上的存储库,包含一个通过git-lfs存储的文件.如果我只是让VSTS构建checkout存储库,它只需下载包含文件ID的git-lfs元数据文件.
以下是VSTS如何获取其来源的输出:
Syncing repository: MyRepo (Git)
Checking out c84ef2f2bbad4fa3dc70dbd4100534390b9c8f18 to d:\work\73\s
Checked out branch refs/heads/develop for repository MyRepo at commit c84ef2f2bbad4fa3dc70dbd4100534390b9c8f18
Run Code Online (Sandbox Code Playgroud)
我需要做什么来检查真实文件?
编辑:我假设我需要git lfs fetch在VSTS签出源后手动调用.但是在这种情况下如何处理身份验证(VSTS需要)?
我使用Xcode创建了一个机器人,以便在我的项目中进行持续集成。
我添加了一个触发器,以便在集成之前运行,在该触发器中尝试执行“ git lfs pull”,以便将大型文件提取到Xcode用于执行构建的临时目录中。
为了使集成成功,有什么办法可以使“ git lfs pull”起作用?
目前,我无法成功下载大文件。我的脚本如下所示:
#!/bin/bash
changeToRepo() {
cd ${XCS_SOURCE_DIR}/My-Project-Name
}
changeToRepo
/usr/local/bin/git-lfs pull
Run Code Online (Sandbox Code Playgroud)
但是,不会下载大文件,并且当我查看触发脚本的日志时,会看到以下输出。
Git LFS:(1个文件中的0个)0 B / 139.13 MB
Git LFS:(1个文件中的0个)0 B / 139.13 MB
无法检出文件git-lfs / 1.1.0(GitHub; darwin amd64; go 1.5.1; git 258acf1)git版本2.5.4(Apple Git-61)$ git-lfs pull无法检出文件
无法写入工作目录文件:打开媒体文件时出错。goroutine 66 [运行中]:github.com/github/git-lfs/lfs.Stack(0x0,0x0,0x0)/Users/rick/go/src/github.com/github/git-lfs/lfs/errors.go :557 + 0x80 github.com/github/git-lfs/commands.logPanicToWriter(0x89a1e8,0xc82002e018,0x896028,0xc82000e480)/Users/rick/go/src/github.com/github/git-lfs/commands/commands.go :184 + 0xf7f github.com/github/git-lfs/commands.logPanic(0x896028,0xc82000e480,0x0,0x0)/Users/rick/go/src/github.com/github/git-lfs/commands/commands.go :148 + 0x421 github.com/github/git-lfs/commands.handlePanic(0x896028,0xc82000e480,0x0,0x0)/Users/rick/go/src/github.com/github/git-lfs/commands/commands.go :123 + 0x4e github.com/github/git-lfs/commands.LoggedError(0x896028、0xc82000e480、0x548060、0x17、0x0、0x0、0x0)/Users/rick/go/src/github。
在我的公司,我们使用Jenkins Git Plugin(2.4.2)和Git LFS(1.1.2)针对我们的内部GitHub Enterprise实例建立了Jenkins CI系统.尽管存储在Jenkins中的有效凭证使用全局配置的凭证存储在Mac从站上,但检查存储库始终以此失败结束:
Caused by: hudson.plugins.git.GitException: Command "git checkout -f ___my_commit_hash___ returned status code 128:
stdout:
stderr: Downloading ___my_lfs_file___ (754 B)
Error accessing media: ___my_lfs_file___ (___my_lfs_file_hash___)
Errors logged to .git\lfs\objects\logs\___my_lfs_log___.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: ___my_lfs_file___: smudge filter lfs failed
Run Code Online (Sandbox Code Playgroud)
并且git日志显示:
Git credentials for https://git.mycompany.com/myrepository.git not found.
Run Code Online (Sandbox Code Playgroud)
要么:
Bad Credentials
Run Code Online (Sandbox Code Playgroud)
当我登录到奴隶并直接运行命令时,一切正常; 只有Jenkins从属进程才会触发错误.这也似乎只影响我们的Mac奴隶,Windows奴隶使用存储的凭据并正确运行Git LFS.如何配置Git插件以在Mac从站上正确运行Git LFS?
我正在尝试将git lfs与我的统一项目一起使用,但由于我对git很新,我不知道如何让lfs跟踪文件.
这是我找到的git ignore文件的链接,我想我应该让git lfs跟踪gitignore中的所有内容?(https://github.com/github/gitignore/blob/master/Unity.gitignore)
但是,我应该首先git-添加我在该项目中的所有文件,然后使用git-lfs-track将该链接中的文件添加到lfs?我对git非常陌生,所以如果有人能为我提供一步一步的指导,我将不胜感激.
干杯
这是Heroku主推送命令的错误消息
Git LFS: (0 of 5 files) 0 B / 167.50 MB
batch response: Repository or object not found: https://git.heroku.com/xxxx-brushlands-xx267.git/info/lfs/objects/batch
Check that it exists and that you have proper access to it
error: failed to push some refs to 'https://git.heroku.com/xxxx-brushlands-xx267.git'
Run Code Online (Sandbox Code Playgroud)
在Git LFS中添加了一个长文本文件(大型文件为git),此后Heroku停止工作。
可能是什么问题?
所以这就是发生的事情:
git reset --soft HEAD~2在事故发生之前做了回复我假设git reset会从意外提交中撤消所有内容,但是在检查了bitbucket的git lfs文件列表之后,似乎所有来自意外提交的lfs跟踪文件都被推送到lfs in origin.如果我查看bitbucket中的源代码,这些文件就不存在了.
所以我试着git lfs prune删除一些看起来与意外提交的数量相关的文件git lfs push origin master.再次检查了bitbucket的git lfs文件列表,但这些文件仍然存在且原始状态没有任何变化.
我做错了什么?
如何将已经作为常规对象提交的单个文件(例如png)转换为git-lfs?
我不想迁移整个存储库,也不想重写存储库的历史记录。
我正在尝试将所有内容添加MyProject/Frameworks/到git-lfs(大文件存储)中。我不确定递归匹配文件夹下所有文件和文件夹的正确格式Frameworks是什么。这个答案说的是正确的格式git lfs track "MyProject/Frameworks/**",但是Atlassian的帮助文件说我应该使用git lfs track "MyProject/Frameworks/"。我都尝试过,但它们都没有git lfs用于存储。它尝试直接上传文件。
当然,我很想知道正确的格式,但是更重要的是,在尝试将更改推送到github之前,我想确认匹配项和文件确实可以正常工作。这将允许我迭代并尝试新事物。
我看到两个相关的命令可能会有所帮助:git lfs status和git lfs ls-files。目前尚不清楚我应该使用哪一个,以及我应该寻找什么输出。例如,当我运行时git lfs status,它向我显示了很多文件Git LFS objects to be committed,使我认为它们将被添加到Git LFS中。但是,在尝试推送到GitHub.com之后,我意识到事实并非如此。如果有帮助,这些文件的输出(Git: edee1ad)在每个文件名之后总会有类似的内容。
当我尝试使用时,git lfs ls-files我不确定git add在文件,提交后还是在推送文件后是否需要运行它。在大多数情况下,它只是向我显示空白输出。
本质上,问题是:如果配置git lfs正确,在尝试提交/推送之前git lfs status应该使用什么工具(例如),以及应该寻找什么输出?
注意:请不要仅回答如何匹配所有递归文件的问题,因为这将对我有一次帮助(此特定情况),而不是让我反复尝试新事物(任何情况)。