Git忽略并改变了过去

ano*_*ard 8 git gitignore

我最近才添加了一个.gitignore文件来忽略我的子目录中的某些特定数据文件.我真的想回到过去,并将它们从以前的提交/历史中删除.

这很容易实现吗?我应该从哪里开始?

cdh*_*wie 9

这将是一个两步程序:

介绍.gitignore文件

为了实现这一点,早期的提交必须要有你的.gitignore文件.所以,你需要:

  1. 查看根提交: git checkout -b temp $(git rev-list HEAD | tail -1)
  2. 添加.gitignore文件.
  3. git commit --amend
  4. 将所有现有分支重新定位到"temp".这可能会或可能不会无缝地工作,因此如果出现任何冲突,您可能需要摆弄它.
  5. 检查您的工作分支并删除临时分支.

重写历史

现在,您可以通过此命令自动从所有分支中删除这些文件:

git filter-branch --tree-filter 'git clean -f -X' -- --all

这将重写所有分支以删除被忽略的文件.可能需要一段时间,具体取决于您的存储库的大小.

  • 最后一个命令无法删除项目,因为 .gitignore 忽略已添加到存储库中的文件,而 git 不会忽略这些文件。所以解决方案是:http://stackoverflow.com/questions/1139762/gitignore-file-not-ignoring (2认同)