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

git reset --hard

我得到

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

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


当前回答

上面的命令对我都没用,我在这里找到了答案

git status -s | cut -c 4- | xargs git update-index --assume-unchanged
rm .git/index && git reset

其他回答

就像Travis Heeter在他的回答中提到的,试试下面的命令序列:

git lfs uninstall
git reset --hard
git lfs install
git lfs pull

如果这是不工作(因为这不是为我工作),下面的黑客可能工作:

git rm --cached -r .
git reset --hard
git rm .gitattributes
git reset .
git checkout .

这对我很管用!

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

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

>git lfs version
git-lfs/2.7.2

Run:

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

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

在这个github评论中找到。

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

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

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

与上面的@John Kugelman一样,但我把它放在一个别名中,因为我必须这么做很多次。

    
git rm --cached -r . > /dev/null && git reset --hard > /dev/null && git rm .gitattributes > /dev/null && git reset . && git checkout . > /dev/null

run

git add --renormalize .

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