如何清理回购,如果阶段性文件标记为修改?

git reset --hard

我得到

Encountered 7 file(s) that should have been pointers, but weren't:

运行git clean -fdx也没有帮助。


当前回答

确保您已经安装了git lfs 2.5或更高版本(此处下载)。

检查你正在使用你下载的git lfs版本(我是2.7.2):

>git lfs version
git-lfs/2.7.2

Run:

Git LFS迁移导入-修复-一切

拉出分支并修复任何合并冲突。

在这个github评论中找到。

其他回答

run

git add --renormalize .

并提交这些更改。即使当另一个用户在另一个分支上做同样的事情时,这样做也是安全的,因为LFS指针是从文件的散列派生的。它还可能捕获一些行尾错误的文件。

这只是再次显示什么一堆狗**** GIT-LFS。

你可能会遇到这种情况,如果:

文件包含在common-base-branch中,而不是LFS中 在基于common-base-branch的分支LFS -branch中,文件被移动到LFS 在另一个同样基于common-base-branch的非lfs-branch分支中,修改了文件。

或者:

文件不包含在common-base-branch中 在基于common-base-branch的分支LFS -branch中,文件被添加到LFS 在另一个同样基于common-base-branch的非LFS -branch分支中,文件被添加(但不是添加到LFS。

在这两种情况下,当您尝试将非lfs-branch合并到lfs-branch时,都会得到这种错误。

您可能会问,为什么会出现这种情况,但答案是,许多软件是由不止一个人开发的(这就是为什么会有像GIT这样的版本控制系统),而且人们并不总是彼此交谈,或者LFS是后来在一个特性分支的项目历史中引入的,而“正常”的开发仍然在其他分支中进行。

这是一种合法的合并冲突情况,而不是错误或损坏的工作目录或任何东西(正如其他一些答案所暗示的那样)。GIT-LFS只是处理得不好。

您现在要做的是确保冲突文件的正确版本进入GIT-LFS,因此您可能想要选择这个问题的答案…(注意事项:插入至少一个有效答案的链接)

如果你只是想摆脱那个糟糕的承诺,你可以回到master by

git reset --soft origin/master
git reset --hard

然后你从讨厌的7非lfs文件中解脱出来:-)

在这个问题上有多个步骤来解决。

如果你只是处于一个破碎的状态,就像卡在一个分支上,因为你不能重置/丢弃对问题文件的更改:删除.gitattributes文件可能足以让你进行下一次git移动。一旦你移动了你的git,你可能需要恢复.gitattributes文件,但至少你摆脱了困境。

我希望我在尝试上述所有方法之前就知道这一点。至少尝试一下是一个低风险的选择。

确保您已经安装了git lfs 2.5或更高版本(此处下载)。

检查你正在使用你下载的git lfs版本(我是2.7.2):

>git lfs version
git-lfs/2.7.2

Run:

Git LFS迁移导入-修复-一切

拉出分支并修复任何合并冲突。

在这个github评论中找到。