git 签出获取 ASCII 文件而不是二进制文件

git checkout getting ASCII file instead of binary

在新 PC 上安装了 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

看到失败后,我installed/enabledgitlfs:

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

/root/.gitconfig/var/lib/jenkins/.gitconfig 在新旧 PC 上看起来完全一样。

有什么问题吗?

磁盘上的文件称为 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 自动设置,但如果更方便,您可以手动设置它们。