首页 > 解决方案 > 如何忽略 git 中大量已删除的文件?

问题描述

我添加了一个包含数百万个文件的文件夹,git add并使用git rm -r FolderPath. 然后我git commit提交了,.git 中的对象文件夹大小达到了 250mb 以上。因此,当我尝试推送存储库时,它实际上并不能完成大量文件的工作。我尝试了很多方法,如git add -u, git gc,git gc --prune=now --aggressive等,但没有一个能解决问题。

最后我删除了对象文件夹,一切都搞砸了。所以我既不能推也不能拉。

有人知道避免这些情况的简单方法吗?

标签: git

解决方案


最好的方法是:不要提交你不想提交的内容。

每个提交都会添加到存储库。存储库只不过是大量提交的集合。

所有提交都是完全、完全只读的。任何提交的任何部分都不能更改。

每个提交都有其所有文件的完整快照。如果快照中的文件与某个先前快照中的某个先前文件相同,Git 可以并且确实重复使用先前的文件。如果快照没有以前的文件,它只是没有文件。这不会改变之前的快照。您仍然只是添加一个快照:它只是一个没有文件的快照。

可以删除一个提交,排序。但是,要做到这一点,您还必须删除每个后续(后代)提交,因为每个提交的一部分是其先前提交的 commit-hash-ID ,它必须存在。因此,如果您错误地输入了一个大提交,那么当它仍然是最后一个提交时,很容易将其删除。但是,如果您在其之上添加更多提交,您现在必须从错误的提交中删除每个提交。

我将剩下的留给如何撤消 Git 中最近的本地提交?


推荐阅读