Git-删除大文件的提交

Git-删除大文件的提交,git,large-files,Git,Large Files,我错误地提交了一个大文件(>100Mb),我真的不需要将它包含在我的git历史记录中 我删除了文件,也从git缓存中删除了它,然后再次提交 尽管如此,当我尝试推送到远程分支时,git给了我一个大小错误 我还尝试了一个git-rebase,但是提交仍然存在,我该怎么办 remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.

我错误地提交了一个大文件(>100Mb),我真的不需要将它包含在我的git历史记录中

我删除了文件,也从git缓存中删除了它,然后再次提交

尽管如此,当我尝试推送到远程分支时,git给了我一个大小错误

我还尝试了一个
git-rebase
,但是提交仍然存在,我该怎么办

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 195471c5940ef60fa1dd2ba5a52a4a6a
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File custom_include/xyz.sql is 964.43 MB; this exceeds GitHub's file size limit of 100.00 MB

如果使用git还原或删除文件并提交,这还不够,因为该文件将成为您尝试推送的分支历史的一部分。您可以通过修改该文件(这将创建一个fork)来删除添加该文件的修订版上的文件,然后选择修改后应用于原始分支上的所有更改。

如果使用git revert或删除该文件并提交,这还不够,因为该文件将成为您尝试推送的分支的历史记录的一部分。您可以通过修改(这将创建一个分叉)来删除您添加的修订版上的文件,然后选择在您修改的修订版后应用于原始分支上的所有更改。

提交大文件后,删除它并提交该更改不会将其从历史记录中删除

只要知道文件所在的完整路径,就可以使用下面的命令从提交历史记录中删除该文件

但是,请注意:此命令将从添加要删除的文件的位置重新写入git历史记录

git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch [path to file to remove]' --prune-empty --tag-name-filter cat -- --all

我从Ted Naleid的这篇优秀博文中学到了如何做到这一点:

一旦提交了大文件,删除它并提交更改不会将其从历史记录中删除

只要知道文件所在的完整路径,就可以使用下面的命令从提交历史记录中删除该文件

但是,请注意:此命令将从添加要删除的文件的位置重新写入git历史记录

git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch [path to file to remove]' --prune-empty --tag-name-filter cat -- --all

我从Ted Naleid的这篇优秀博文中学到了如何做到这一点:

您可以添加特定的错误消息和/或您为发现此问题而运行的特定git命令吗?这有帮助吗:?尽管它是关于敏感数据的,但它是关于从git repo中永久删除数据的。不,它不是关于敏感信息,只是大文件阻止了提交。注意,同样的概念也适用。您需要从提交历史记录中完全删除这个大文件。执行此操作的步骤与从历史记录中完全删除敏感数据的步骤完全相同。请添加特定的错误消息和/或您为发现此问题而运行的特定git命令。这是否有帮助:?尽管它是关于敏感数据的,但它是关于从git repo中永久删除数据的。不,它不是关于敏感信息,只是大文件阻止了提交。注意,同样的概念也适用。您需要从提交历史记录中完全删除这个大文件。这样做的步骤与从历史记录中完全删除敏感数据完全相同。发布没有技术细节的链接是一种不好的做法,因为网站有可能在不久的将来被关闭。我在你评论时扩展了我的答案:)。发布没有技术细节的链接是一种不好的做法,由于该网站有可能在不久的将来关闭。我在您评论时扩展了我的答案:)。