如何删除由回购中的大文件引起的未删除的提交,此文件至今已删除?

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

我是git的初学者。我的仓库有简单的MATLAB代码文件。我犯了一个将大型文件上传到仓库(> 100 MB)的错误。之后,我使用了以下命令

git add --all
git commit --all --message "Moar"
git push --all 

推送命令引发以下错误:

远程:错误:GH001:检测到大文件。您可能要尝试Git大文件存储-https://git-lfs.github.com。远程:错误:跟踪:47cf7a12aa48e59e3007901d70e3843b远程:错误:有关更多信息,请参见http://git.io/iEPt8g。远程:错误:文件prepro / workbench-windows64-v1.3.2 / workbench / bin_windows64 / rfMRI_REST1_LR_Atlas.dtseries.nii是418.46 MB;这超出了GitHub的文件大小限制100.00 MB...! [远程拒绝]主机->主机(预接收挂钩被拒绝)

然后,我惊慌并删除了引起错误的上述大文件。但是现在当我尝试推向我的主人时,我仍然遇到相同的错误!

这些大文件不再存在于我的本地存储库中。那么,为什么git不让我推?另外,发生这种情况后,我在本地存储库中进行了一些更改,因此如果没有这些大文件,我将无法恢复到最近的提交。

是否有一种方法可以通过让git知道存储库中不再存在大文件来精确地做到这一点?

git git-commit
1个回答
1
投票

由于您是初学者,请阅读此答案,它将为您提供很多信息。How to move HEAD back to a previous location? (Detached head) & Undo commits


为了从旧提交中删除内容,我推荐此工具:

https://rtyley.github.io/bfg-repo-cleaner/

这是完成此类任务的理想工具

BFG回购清洁器

git-filter-branch的替代。

BFG是git-filter-branch的一种更简单,更快的替代方法,用于从Git存储库历史记录中清除坏数据

  • 删除疯狂的大文件
  • 删除密码,凭据和其他私人数据

示例(来自官方网站)

在所有这些示例中,bfg是java -jar bfg.jar的别名。

# Delete all files named 'id_rsa' or 'id_dsa' :
bfg --delete-files id_{dsa,rsa}  my-repo.git
© www.soinside.com 2019 - 2024. All rights reserved.