使用当前的 .gitignore 制作 Git 重建历史

Make Git rebuild history using the current .gitignore

我的项目中没有使用.gitignore来忽略编译后的二进制文件等文件,所以这些编译后的二进制文件已经提交到Git仓库中。现在我将 .gitignore 添加到我的项目中。我想重建整个 Git 仓库,忽略 .gitignore 中列出的文件而不丢失任何历史记录。我该怎么做?

从当前缓存中删除那些刚刚添加的二进制文件。

git rm --cached abinary

然后你的.gitignore会自动忽略那些二进制文件。

但是如果它们是在过去的提交中提交的,您不会丢失历史记录,但您仍然需要从所述提交中删除这些二进制文件。
您将需要 git filter-branch or bfg repo cleaner.

那会改写你的历史,你需要一个 git push --force,所以如果你有多个(你自己的)合作者,请提前警告他们。