我在本地Git存储库中有~50次提交。无意中在初始提交中,我已经包含.idea
文件夹,现在我必须从初始提交中删除该文件夹中的所有文件。是否有机会实现这一目标?
我尝试了以下命令,但转换为单独的提交而不链接到以前的提交:
$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit --amend
答案 0 :(得分:2)
您可以使用filter-branch
执行此操作:
cp -r .idea .idea.bak
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch -r .idea' --prune-empty --tag-name-filter cat -- --all
这将从过去的所有提交中删除.idea
。
在此之后,您可以像以前一样更新.gitignore
文件,
避免错误地在将来添加.idea
。
请注意,这会重写您的存储库的历史记录。 如果是公开的,还有其他合作者, 然后仔细思考这是否真的值得做。
详情请见 https://help.github.com/articles/removing-sensitive-data-from-a-repository/