所以我有一个安装了LFS且可以正常工作的Git存储库。在dev
分支上,使用Windows文件资源管理器将图像文件(由LFS跟踪)从NoMedal-Fade.png
重命名为None-Fade.png
。我承诺,将它推到了GitLab上,效果很好。
然后,在我的计算机上此仓库的另一个实例中(此仓库位于另一个名为production/foo
的分支上,我运行了git fetch
和git merge origin/dev
以获取并合并我在另一个实例中所做的修改。是我无法理解正在发生什么的地方:合并失败并显示此错误:
error: add_cacheinfo failed to refresh for path '■■■■/■■■■/■■■■/■■■■/■■■■/■■■■/None-Fade.png'; merge aborting.
这将在未暂存的修改中添加新文件:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: ■■■■/■■■■/■■■■/■■■■/■■■■/■■■■/None-Fade.png
出于不理解,我尝试git reset --hard
,但文件仍在此处。我尝试git checkout <file path>
,但文件仍在此处。我删除了实例,克隆回去,然后再次尝试相同的过程,仍然是同样的问题。我试图暂存我想要的文件,提交并推送。现在该文件不再显示在未暂存的文件列表中,但是由于上述相同错误(add_cacheinfo
),我仍然无法合并。最后,我的一个朋友告诉我在合并之前先尝试git config core.fscache false
,但是没有任何变化(与全局配置相同)。
PS C:\Users\■■■■> git --version
git version 2.24.0.windows.2
感谢您的宝贵帮助和时间。
好吧,我发现的唯一一件事是在重命名文件之前使用git reset --hard <commit hash before rename>
和git push origin <remote branch>:<local branch> --force
来更新分支。
警告:请记住,如果您与多个人一起工作,后一个命令将非常危险。考虑到我是这个项目上唯一与朋友一起的人,很容易告诉他将项目克隆回去,避免出现更大的错误。
从历史记录中删除了错误的提交后,我再次使用git mv <file name> <new file name>
重命名了文件,而不是使用Windows的文件浏览器。显然,它运行良好,文件不再有问题。
但是,这仍然不是解决问题的真正方法,更像是一种解决方法。在有人找到其他东西之前,我会保留我的答案作为最佳解决方案。