正在从联机存储库中删除提交的文件-Github/eGit

正在从联机存储库中删除提交的文件-Github/eGit,git,github,egit,Git,Github,Egit,我有一个私人在线存储库,我已经使用了一段时间。我想现在就公开它,但是它持有机密信息。由于我对Git/Github还比较陌生,我不知道该怎么做,因为我的理解是,如果我删除存储库中的任何这些文件,它们也会在下次拉取时在本地删除 我目前的想法是创建一个新分支,只推送存储在存储库中的文件。然后将此新分支设为新的“默认”主分支,并删除旧的主分支 这样行吗?有更好的替代方法吗?请查看git filter分支命令。这将重写存储库的历史记录,从而更改您更改的现有提交和任何依赖提交的SHA。更改的提交SHA可能会

我有一个私人在线存储库,我已经使用了一段时间。我想现在就公开它,但是它持有机密信息。由于我对Git/Github还比较陌生,我不知道该怎么做,因为我的理解是,如果我删除存储库中的任何这些文件,它们也会在下次拉取时在本地删除

我目前的想法是创建一个新分支,只推送存储在存储库中的文件。然后将此新分支设为新的“默认”主分支,并删除旧的主分支


这样行吗?有更好的替代方法吗?

请查看
git filter分支
命令。这将重写存储库的历史记录,从而更改您更改的现有提交和任何依赖提交的SHA。更改的提交SHA可能会影响存储库中的打开拉取请求,因此建议在从存储库中删除文件之前合并或关闭所有打开的拉取请求

有关更多信息,请参阅

然而,从你的帖子中还不清楚,你是否打算保存旧回购协议中的机密信息。如果是肯定的,你最好复制一份私人回购协议,从中删除所有机密信息,并将其作为全新的公共回购协议推送到GitHub。

看看Git BFG(参见下面的参考资料),它允许你从回购协议中删除文件(创建一个可以推送的新回购协议)。该链接显示了许多用例


这行吗?
。。。你一个人的建议是行不通的,因为这些机密文件将永远成为你历史的一部分,即使你从一个新的分支中删除它们。如果你真的想清除这些文件,你可能需要使用类似filter branch的东西,并从你的历史记录中删除这些文件的所有痕迹。可能是重复的啊,我想我不太清楚,抱歉。机密信息是访问令牌等。因此,我仍然需要继续使用它,我只是希望将其从任何未来的提交中排除。因此,如果我决定创建一个全新的repo,以便排除这些文件,我就不必使用git filter branch命令,对吗?@Glanyx correct,在将新repo推送到GitHub之前,您只需删除所有敏感数据。