意外地我推送了一个提交,其中包括应该被忽略的文件(node_modules和bower组件目录)。 由于我使用了很多依赖项,因此提交相当大,并且上传了大量数据。
我在另一次提交中删除了这些文件并包含了.gitignore
文件,但是每次克隆应用程序时,所有这些大文件都会作为项目的历史记录下载。
有没有办法摆脱这种情况?一种从我的git repo中明确删除 node_modules 和 bower组件目录的方法吗?
答案 0 :(得分:1)
你可以重写git历史记录并从git中删除这些对象。 查看下一个链接https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
答案 1 :(得分:0)
我会说
git commit --amend
或
git commit --rebase
但是如果要删除的文件已存在很长时间了,那么:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
答案 2 :(得分:0)
即使您执行git rm
,文件也会在项目历史记录中继续。这样,您必须在克隆存储库时下载它们。要永久删除文件,您需要更改历史记录。
如果添加文件的提交是最新的,则可以在添加文件的提交之前对提交执行git reset
。但是,如果文件是在前一段时间添加的,则需要使用git filter branch
。我将展示一些我想要从存储库中删除大文件时使用的步骤。
git filter-branch --index-filter 'git rm --cached --ignore-unmatch file-or-directory-that-you-want-to-remove-with-complete-path' --all.
然后,您需要执行git push -f
,因为您更改了项目历史记录。这样,当您再次克隆项目时,将不再下载已删除的文件。