11

我有一个使用 git-lfs 存储一些大文件的存储库的工作副本。我安装了 git-lfs 二进制文件,但可能没有在工作副本中运行“git lfs install”。当我想在添加 lfs 文件后更新我的本地工作副本时,我执行以下命令:

git pull
git lfs pull

只要添加了 lfs 文件,它就可以正常工作。然后存储库有一些 lfs 文件被修改,当我运行时,git pull我收到错误消息:

Your local changes to the following files would be overwritten by merge
....
....

它列出了所有将被拉取修改的 lfs 文件。

从那时起,我git lfs install在工作副本中运行,它运行良好,但git status仍将所有这些文件列为已修改,并且 agit pull给了我同样的错误。

我的问题基本上是,如果我使用 lfs,更新工作副本的正确步骤是什么?我该如何清理这种棘手的情况?

4

3 回答 3

11

事实证明,git lfs install在工作副本中运行是解决方案的一半。后半部分是git reset在工作副本内部运行:

  • 将大文件留在原处
  • 让 git 知道它们实际上并不脏并且很好

现在看来我不再需要明确git lfs pull地获取最新的大文件了。第一个git pull工作正常。

于 2016-01-14T18:39:42.790 回答
0

在使用 Windows(git 版本 2.31.1 和 git-lfs/2.13.3)和 Linux(git 版本 2.25.1 和 git-lfs/2.9.2)时,我对具有大写文件扩展名的文件几乎有同样的问题.

.gitattributes包含*.jpg filter=lfs diff=lfs merge=lfs -text一个小写字母*.jpg,我在 Windows 下提交了带有大写文件扩展名的文件,例如test.JPG. 在 Linux 系统上克隆存储库后,具有大写扩展名 ( .JPG) 的映像仅保留了引用,因为具有小写文件扩展名 ( .jpg) 的映像按预期克隆了。
在 Linux 系统上执行 a 后git lfs pull,图像在文件系统上的位置正确,但现在它们显示为Modified

解决方案是通过运行以下命令将 Git 配置为忽略 Linux 上的情况:
git config --global core.ignorecase true

于 2021-10-04T18:06:24.710 回答
0

对我来说,在我 git clone 之前,我先做git lfs install然后git clone. 一切都解决了!我认为这个问题非常重要并且很常见,有大量的 GitHub 讨论没有显示真正的解决方案(至少一眼看不到)!感谢您的回答。

于 2018-02-19T01:43:32.810 回答