考虑这种情景
私有项目用着 gitlab,现在想开源到 github
可是
但历史提交中存在不想泄露的敏感文件,虽然最新的 HEAD 已经删掉了文件,但一旦传到 github 也能通过历史提交找到这些文件
如果按删除敏感文件的操作,如 https://help.github.com/articles/removing-sensitive-data-from-a-repository/ ,就会重写所有历史,但项目的其他地方有对 git 历史 commit 的引用,不想修改历史提交
可能可以维护两个不同的 git 文件夹?
也许可以先备份一份.git 目录,执行 删除敏感文件的操作得到另一份修改后的.git ,这样就有了两个不同的 git 历史;原版本继续 push 给自己的 gitlab,清理过的可以 push 给 github
要提交新的 commit 的时候 对.git 目录操作 add commit push 一次后改名 对另一个.git 目录也同样操作一次 add commit push,两个 git 目录互不干扰
问题
这种为不同远程服务器维持两个不同版本,新加的修改同时提交给两个 git 历史,有啥最佳实践嘛?
或者有啥更好的方案嘛?也许从零开始一个分支 把历史提交一个个过滤好重新 commit,不同服务器传不同分支,但这样也还是要提交一次后切分支再提交一次