用git checkout获取ASCII文件而不是二进制文件

3

在全新的电脑上安装了Ubuntu 18.04,一个二进制文件被克隆成了文本文件。

在新旧两个电脑上运行了同一条命令:

$ git checkout -f a8afd894150cc31cde43dbeb422183640b64dcab
HEAD is now at a8afd8941 did some stuff.

老旧的电脑:

file composer.phar
composer.phar: data

新电脑:

$ file composer.phar
composer.phar: ASCII text

在看到它失败后,我安装/启用了git lfs:

$ apt-get install git-lfs 
$ git lfs install
Updated git hooks.
Git LFS initialized.

在旧电脑和新电脑上,/root/.gitconfig/var/lib/jenkins/.gitconfig 看起来完全一样。

有任何想法出了什么问题吗?

1个回答

5
您在磁盘上拥有的文件被称为LFS指针文件,这是Git LFS跟踪数据的方式。如果您在检出时未安装Git LFS或者您尚未运行“git lfs install”命令,则Git不会调用Git LFS以检出真实的大型文件,并且将使指针文件留在树中。
最简单的恢复方法是运行“git lfs pull”命令,它将下载和检出工作树中的所有文件。由于您已经运行了“git lfs install”命令,因此Git应该在下次切换分支时调用Git LFS,并且一切都应该自动完成。
供参考,您在“.gitconfig”文件中寻找的条目如下:
$ git config -l | grep filter.lfs
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.smudge=git-lfs smudge -- %f

这些设置可以通过git lfs install自动完成,但如果更方便的话,也可以手动进行设置。


1
感谢您抽出时间。运行了 git lfs pull 命令,它确实正确地检出了文件(尽管在运行 git lfs install 命令后,我曾尝试删除目录并再次运行 git checkout -f a8afd894150cc31cde43dbeb422183640b64dcab 命令,但仍然只拉取了文本文件)。看起来 Jenkins 仍然会拉取文本文件,但这是另一个问题。 - Buffalo
同样的问题在这里。 - langlauf.io

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接