Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git签出获取ASCII文件而不是二进制文件_Git_Ubuntu_Git Lfs - Fatal编程技术网

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

git签出获取ASCII文件而不是二进制文件,git,ubuntu,git-lfs,Git,Ubuntu,Git Lfs,在一台新电脑上安装了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

在一台新电脑上安装了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.
新旧PC上的
/root/.gitconfig
/var/lib/jenkins/.gitconfig
看起来都一样


有什么问题吗?

磁盘上的文件称为LFS指针文件,它们是Git LFS跟踪数据的方式。如果在签出时没有安装Git LFS,或者您没有运行
Git LFS install
,那么Git就不会调用Git LFS签出真正的大文件,它会将指针文件留在树中

从中恢复的最简单方法是运行
git lfs pull
,它将下载并签出工作树中的所有文件。既然您已经运行了
gitlfs安装
,git应该在下次切换分支时调用gitlfs,一切都应该自动发生

作为参考,您在
.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-lfs-pull
,它确实正确地签出了文件(即使在运行了
git-lfs-install
之后,我尝试删除目录并再次运行
git-checkout-f a8afd894150cc31cde43dbeb422183640b64dcab
,只是再次拉取文本文件)。另一方面,看起来詹金斯仍然在提取文本文件,但这是另一个问题。