Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git修改以前的提交,该提交已经用错误的更改推送_Git_Github - Fatal编程技术网

Git修改以前的提交,该提交已经用错误的更改推送

Git修改以前的提交,该提交已经用错误的更改推送,git,github,Git,Github,我的git存储库有以下情况 提交N:我的最新提交(3个文件更改) 提交N-1:一些好的提交(2个文件更改) 提交N-2:一些有问题的提交(2个文件更改,其中一个文件中您的密码向世界显示hi) 提交1 因此,所有这些提交都已推送到远程存储库 我想要达到的目标: 让一切保持不变,但修改远程提交n-2的方式,我会修改其中一个文件,并删除密码未显示的区域。此外,更新后,密码在提交历史记录中不应可见。但是我不想失去我目前的任何改变。在这种情况下使用的现代工具是 例如: 要将文本“password”

我的git存储库有以下情况

提交N:我的最新提交(3个文件更改)

提交N-1:一些好的提交(2个文件更改)

提交N-2:一些有问题的提交(2个文件更改,其中一个文件中您的密码向世界显示hi)

提交1

因此,所有这些提交都已推送到远程存储库

我想要达到的目标:


让一切保持不变,但修改远程提交n-2的方式,我会修改其中一个文件,并删除密码未显示的区域。此外,更新后,密码在提交历史记录中不应可见。但是我不想失去我目前的任何改变。

在这种情况下使用的现代工具是

例如:

要将文本“password”替换为“p455w0rd”:

git filter-repo --replace-text <(echo "password==>p455w0rd") main~2..main

git filter repo——从官方角度讲,替换文本,因为您已经将纯文本密码推送到GitHub,它可能在您团队中的任何人手中,也可能在世界任何地方。您应该立即更改此密码。然后,可能会删除包含密码的提交,只是为了不让你的站点看起来到处都是安全漏洞。我在业界已经有足够长的时间考虑更改密码了!:)感谢这令人难以置信的景象:)你可以做一个交互式的重基,使之成为最新的提交,然后重新设置——对其进行软化和更改。或者您可以使用git revert将其还原,然后执行新的提交以修复错误。在任何情况下,您都需要执行git push-force(使用lease的force更安全)。