-1

不小心我推送了一个提交,其中包括应该被忽略的文件(node_modules 和 bower 组件目录)。由于我使用了许多依赖项,因此提交变得非常大,并且上传了很多数据。

我在另一个提交中删除了这些文件并包含了一个.gitignore文件,但是每次我克隆应用程序时,所有这些大文件都会作为项目的历史记录下载。

有没有办法摆脱它?一种从我的 git存储库中明确删除node_modulesbower 组件目录的方法?

4

3 回答 3

1

你可以重写 git 历史并从 git 中删除这些对象。查看下一个链接https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History

于 2013-01-10T23:12:05.470 回答
0

即使您执行 a 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.

然后,您需要执行 a git push -f,因为您更改了项目历史记录。这样,当您再次克隆项目时,将不再下载已删除的文件。

于 2013-01-11T02:30:53.400 回答
0

我会说

git commit --amend

或者

git commit --rebase

但是,如果您要删除的文件已经存在了很长一段时间,那么:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
于 2013-01-10T23:17:32.297 回答