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