[英]how to remove a large file 2 git commits back?
本质上,我想在我的本地仓库中回退两次提交。 尚无任何东西被推到遥远的地方。
因此,在我的GIT存储库中,我不小心在提交(A)中添加了一个巨大的zip文件。 我意识到了这一点,使用finder删除了zip文件并进行了另一次提交(B)。
但是现在我意识到,如果将其推送到远程,它将包含整个zip文件...
为了使事情变得更复杂,在我不想丢失的第一次提交(A)中,我还对几个文件进行了许多重要更改。
在推送到远程服务器之前,如何从历史记录中删除该zip文件? 我可以在两次提交之前回到文件状态,而不会丢失其他几个文件中所做的所有更改吗?
修复它的最简单方法是使用git reset <commit>
命令。
对于您的情况,由于要回滚两次提交,因此可以执行以下操作:
git reset HEAD~2
从git help reset
:
git reset
[<mode>] [<commit>]
--mixed重置索引,但不重置工作树(即,已更改的文件将保留但未标记为提交),并报告未更新的内容。 这是默认操作。
之后,您的存储库中的文件将完全不会更改,但是最近的两次提交将不再存在。
然后,您可以按照通常的方式选择要提交的文件。
阅读以上链接以获取全部详细信息。
您可以使用 :
从上面的帖子中获得的是重置您的HEAD
可以执行的流程
其他选项:
How to remove big files from the repository
您可以使用git filter-branch
或BFG。 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.