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

标签 git ubuntu git-lfs

在新 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/

相关文章:

node.js - 在 ubuntu 12.04 下以多种方式安装 node.js 0.10.26 失败

git - flake8,仅在 diff 和 exclude 上

ubuntu - MySQL Workbench 不在钥匙串(keychain)中保存密码

git - 有什么简单快捷的方法可以判断一个 git repo 是否使用了 LFS

git - tortoisegit 支持 git lfs 吗?

git - 如果我没有 git lfs lock 会发生什么

git - Git Repository 中的文件加密

git - 如何在 Heroku 上使用 1 个共享模块部署单独的 2 个应用程序

php - 如何在 php5.6 上激活 SOAP

node.js - 如何在 ubuntu 16.04 上清理卸载 nodejs/node