为什么此文件阻止我合并分支?

问题描述 投票:1回答:1

所以我有一个安装了LFS且可以正常工作的Git存储库。在dev分支上,使用Windows文件资源管理器将图像文件(由LFS跟踪)从NoMedal-Fade.png重命名为None-Fade.png。我承诺,将它推到了GitLab上,效果很好。

然后,在我的计算机上此仓库的另一个实例中(此仓库位于另一个名为production/foo的分支上,我运行了git fetchgit 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 gitlab git-merge git-lfs
1个回答
0
投票

好吧,我发现的唯一一件事是在重命名文件之前使用git reset --hard <commit hash before rename>git push origin <remote branch>:<local branch> --force来更新分支。


警告:请记住,如果您与多个人一起工作,后一个命令将非常危险。考虑到我是这个项目上唯一与朋友一起的人,很容易告诉他将项目克隆回去,避免出现更大的错误。


从历史记录中删除了错误的提交后,我再次使用git mv <file name> <new file name>重命名了文件,而不是使用Windows的文件浏览器。显然,它运行良好,文件不再有问题。

但是,这仍然不是解决问题的真正方法,更像是一种解决方法。在有人找到其他东西之前,我会保留我的答案作为最佳解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.