首页 > 解决方案 > 删除 Git 存储库中的文件但文件不存在

问题描述

在提交并推送到我的仓库时,我收到以下错误: 在此处输入图像描述

问题是我已经手动删除了视频文件。该视频在我的仓库中的任何地方都不存在。我也试过了 git rm src/assets/video/Greensleeves,它说fatal: pathspec src/assets/video/Greensleeves did not match any files

我怎样才能通过这个以便我可以提交/推送?

在此处输入图像描述

标签: angularjsgithubgit-lfs

解决方案


尝试并应用git filter-repo的,它确实取代了旧的git filter-branch或 BFG

它有许多使用示例,包括基于路径的过滤,以便您src/assets/video/Greensleeves在过去的提交中远程文件:

要保留这些路径以外的所有文件,只需添加--invert-paths

git filter-repo --path src/assets/video/Greensleeves --invert-paths

然后git push --force(这确实会重写您的存储库的历史记录,因此请务必通知任何其他合作者)

因为它必须在一个新的克隆上完成:

  1. 不要触摸任何东西到您当前的克隆文件夹
  2. 创建存储库的单独克隆,您可以在其中执行过滤器存储库
  3. 在第二个克隆中,现在已清理(其历史中不再有大文件),从您的第一个 repo 导入您的工作

也就是说,对于第 3 点:

cd /path/to/second/clone
git --work-tree=/path/to/first/original/clone add .
git commit -m "Import work from first clone"
git push --force

推荐阅读