从早期提交中删除文件?

时间:2016-01-11 06:47:56

标签: git github version-control

我错误地在本地Git Repo中完成了一个大文件的git commit并且在远程推送(因为尺寸小于100Mb而非常大)。

在提交之后,我做了很多其他提交(因此我丢失了跟踪我提交大文件的位置)。

git push我收到错误,该文件是> 100 Mb(文件大小增加)因此无法推送。

我收到错误后,我在该文件上git rm

现在,当我再次git push时,同样的错误仍然存​​在。

我的方法是首先检索git rm文件(使用git checkout commit#wherefilewasnotdeleted),然后从提交中删除文件(使用git reset -- soft Head)?

我正在尝试上述方法但是当我执行git push时,它还没有退出我推送的代码吗?

请建议做什么?

1 个答案:

答案 0 :(得分:2)

您应该使用此工具:

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

这是完成此类任务的完美工具

  

BFG Repo-Cleaner

     

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