我不小心向一个功能分支提交了密码,并将该分支同步到了远程。我尝试使用bfg清理分支提交历史记录,但没有成功,而使用git-filter-repo我遇到了其他问题。
现在,我将不带密码的设置文件提交到分支。
如果我使用squash merge将功能分支合并到源分支,并删除功能分支,是否会有效地从所有git历史记录中删除密码?
发布于 2020-11-19 03:40:01
我最终做的是
最好不要偷懒你的错误,而是采取步骤来更改密码。
发布于 2020-11-11 04:20:35
到目前为止,密码似乎只在您的本地功能分支和远程功能分支上。删除它的最简单方法是在本地删除它,然后强制将其推回。使用amend或交互式rebase在没有密码的情况下在本地重写提交,然后强制推出分支。在这一点上,提交将在服务器上保持隐藏状态,直到它被垃圾收集,并且所需的时间取决于服务器。(一些git客户端默认为60天,但如果没有更多信息,就不可能知道您的服务器默认为什么。)
注意:如果您已经创建了一个包含带有密码的提交的分支的拉取/合并请求,那么服务器可能会无限期地保留所包括的提交的历史记录。出于这个原因,我会避免在拉/合并请求时进行挤压合并,因为它可能会在很长一段时间内保留提交的历史记录。
如果您的存储库是公共的,那么您应该假设密码已经被攻破,并且您应该立即更改它。事实上,即使在私有repo中,这也可能是最安全的选择,除非您愿意与您的合作者共享它。
发布于 2020-11-11 07:17:05
首先,让我们切入正题:
密码已经被泄露了。在你把它推到遥控器上后,你无法追踪它可能去了哪里。您不能将这个精灵放回瓶子里;唯一安全的做法是更改密码。
这使得剩下的讨论大多是学术的。要么密码不会被更改并将其从历史记录中删除是不充分的措施,要么密码将被更改并从历史记录中删除是表面上的。
尽管如此,为了回答你的直接问题:
如果我使用squash合并并删除功能分支,将功能分支合并到源分支,是否会有效地从所有git历史记录中删除密码?
不怎么有意思。要从本地repo中完全删除数据,必须确保所有ref和reflog都无法访问包含该数据的提交,然后必须强制垃圾收集。要真正从远程删除它,需要类似的过程,但如何处理这种内务管理取决于存储库是如何托管的。
再一次,所有这一切都假设没有人已经获取了其历史记录包含密码的ref。如果他们这样做了,你也不能强迫他们放弃它。
https://stackoverflow.com/questions/64775871
复制相似问题