【问题标题】:Why does this file prevents me from merging my branch?为什么这个文件阻止我合并我的分支?
【发布时间】:2020-03-25 11:42:36
【问题描述】:

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

然后,在我计算机上此 repo 的另一个实例中(此 repo 位于另一个名为 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 &lt;file path&gt;,但文件仍然在这里。我删除了实例,克隆回来,并再次尝试相同的过程,仍然是同样的问题。我试图暂存我想要的文件,提交并推送它。现在该文件不再显示在未暂存文件列表中,但由于上述相同的错误(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】:

    好的,所以我发现的唯一一件事就是在重命名文件之前重置分支,使用git reset --hard &lt;commit hash before rename&gt;git push origin &lt;remote branch&gt;:&lt;local branch&gt; --force 来更新遥控器。


    警告:请记住,如果您与多人一起工作,后一个命令是非常危险的。鉴于我是这个项目中唯一有朋友的人,很容易告诉他克隆项目并避免更大的错误。


    从历史记录中删除错误提交后,我再次使用 git mv &lt;file name&gt; &lt;new file name&gt; 重命名文件,而不是使用 Windows 的文件资源管理器。它运行良好,显然,我对文件没有更多问题了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2021-12-09
      • 2017-10-01
      • 2011-03-27
      • 2018-04-18
      相关资源
      最近更新 更多