我有一个远程裸 git 存储库。
一位新开发者克隆了它,但他没有正确配置的 .gitignore 文件,因此他错误地将一些不需要的文件推送到远程。当我提取更改并合并时,我得到了这些以前未跟踪的文件。其他人也从远程提取了更改,并且也拥有这些不需要的文件。
如何从远程存储库以及其他所有人的远程/来源/分支中删除这些文件?
我有一个远程裸 git 存储库。
一位新开发者克隆了它,但他没有正确配置的 .gitignore 文件,因此他错误地将一些不需要的文件推送到远程。当我提取更改并合并时,我得到了这些以前未跟踪的文件。其他人也从远程提取了更改,并且也拥有这些不需要的文件。
如何从远程存储库以及其他所有人的远程/来源/分支中删除这些文件?
请参阅 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
在存储库中检查(并且可以选择在服务器上设置一个挂钩)
这是一个三步过程:
git rm
或完全从历史记录中清除这些文件,具体取决于这些文件从不在存储库中的重要性)git push --force
。git rebase
他们在最后一次知道好的提交上进行工作。作为最后一步,您可能还希望将.gitignore
文件添加到存储库,以便在克隆存储库时忽略所有正确的文件。