我有一个远程裸git存储库.
一位新的开发人员克隆了它,但他没有正确配置的.gitignore文件,所以他错误地将一些不需要的文件推入了遥控器.当我提取并合并时,我得到了这些以前没有跟踪过的文件.其他人也从遥控器中取出了这些更改,并且还有这些不需要的文件.
如何从远程存储库以及其他所有远程/原始/分支中删除这些文件?
请参阅github有一个常见问题解答:https://help.github.com/articles/remove-sensitive-data 以下是步骤:
从本地(工作)树重写树.
$ git filter-branch --index-filter'git rm --cached --ignore-unmatch Rakefile'\ --proune-empty --tag-name-filter cat - --all
强制推送到远程.
$ git push origin master --force
每个人都从遥控器拉出(--force如果需要,可以使用)
为了防止再次发生这种情况,您应该检查.gitignore存储库中的内容(并选择在服务器上设置一个钩子)
这是一个三步过程:
git rm还是完全从历史记录中清除这些文件,具体取决于这些文件从一开始就不会出现在存储库中的重要性)git push --force。git rebase他们在最后一次知道良好的提交上进行工作。作为最后一步,您可能还希望将.gitignore文件添加到存储库,以便在克隆存储库时,所有正确的文件都会被忽略。