在新 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
看到失败后,我安装/启用了git lfs:
$ apt-get install git-lfs
$ git lfs install
Updated git hooks.
Git LFS initialized.
/root/.gitconfig
和 /var/lib/jenkins/.gitconfig
在新旧 PC 上看起来完全一样。
有什么问题吗?
最佳答案
磁盘上的文件称为 LFS 指针文件,它们是 Git LFS 跟踪数据的方式。如果当你进行 check out 时,Git LFS 没有安装或者你还没有运行 git lfs install
,那么 Git 就不会调用 Git LFS 来 check out 真正的大文件,它会将指针文件留在树中。
从中恢复的最简单方法是运行 git lfs pull
,这将下载并 check out 工作树中的所有文件。由于您已经运行了 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
自动设置,但如果更方便,您可以手动设置它们。
关于git checkout 获取 ASCII 文件而不是二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60172926/