【问题标题】:git checkout getting ASCII file instead of binarygit checkout 获取 ASCII 文件而不是二进制文件
【发布时间】:2020-02-12 09:43:50
【问题描述】:

在新的 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 上看起来相同。

有什么想法吗?

【问题讨论】:

    标签: git ubuntu git-lfs


    【解决方案1】:

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

    【讨论】:

    • 感谢您抽出宝贵时间。运行git lfs pull,它确实确实正确地检查了文件(即使在运行git lfs install 之后我尝试删除目录并再次运行git checkout -f a8afd894150cc31cde43dbeb422183640b64dcab,只是为了再次提取文本文件)。另一方面,看起来 jenkins 仍然提取文本文件,但这是另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2015-04-08
    • 2015-03-13
    • 2016-07-12
    • 2020-06-07
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多