git checkout lfs文件立即修改所有lfs文件

时间:2017-09-29 17:59:37

标签: git

基本上,我只是git clone和checkout

git lfs clone https://github.com/**/**.git
git checkout -b add_test_for_multi_portfolio  origin/add_test_for_multi_portfolio

然后,在执行

时,我的所有lfs文件都被视为已修改
git status

令人难以置信的烦人......有什么建议吗?

2 个答案:

答案 0 :(得分:2)

  

关键错误是,一旦我git checkout一个新的分支,所有的lfs文件都被认为是修改过的

首先检查您将core.autocrlf设置为true

如果是,请输入:

git config --global core.autocrlf false

然后再次尝试克隆。

关于LFS本身,请参阅issue 2435

如果您看到类似的内容:

test-lfs - master $> git lfs pull
Git LFS: (19 of 20 files) 196.82 MB / 197.08 MB
Expected OID 7633170d50ca7cfc690f1fca4dde1adc73ef0130b75fc1cb7d4517b1cfdcc5b7, got d10e697da5588ec5c1d580a8c5ee57d105fdfdaadfd9674fef73ba628cf9655c after 9977 bytes written
error: failed to fetch some objects from 'https://****@bitbucket.org/****/test-lfs.git/info/lfs'test-lfs - master! $> git lfs status                                                                                                                                                                                                                                                                [ ruby-2.3.1p112 ]
On branch master
Git LFS objects to be pushed to origin/master:


Git LFS objects to be committed:

        files/default/firmware/bxtgucver87.tar.bz2 (LFS: fc1eb19 -> Git: fc1eb19)
        files/default/firmware/kbldmcver101.tar.bz2 (LFS: 2dfb6b1 -> Git: 2dfb6b1)
        files/default/firmware/kblgucver914.tar.bz2 (LFS: 54a8350 -> Git: 54a8350)

出现这种情况有两个原因:

  
      
  • 未安装LFS的过滤器。 LFS依赖于Git调用名为git lfs filter-process的程序,以便将工作树中的大文件转换为历史记录中的小文件。
      您可以通过运行:

    仔细检查这些是否已安装
    $ git lfs install
    $ git config filter.lfs.process # <- should be "git-lfs filter-process"
    
  •   
  • 您的.gitattributes未调用Git LFS过滤器,这意味着文件未被转换。
      您可以通过检查.gitattributes的内容并运行git lfs track来检查此项,如果您要跟踪的模式不是。

  •   

答案 1 :(得分:1)

感谢您的回答......无论如何,我通过更新git和git-lfs解决了这个问题。然后重新构建一个repo,确保.gitattributes包含git-lfs跟踪所需的所有文件类型,并且仅在此之后将相应的文件添加到git。