如何从Bitbucket Git存储库历史记录中删除使用密码的提交



我不久前就意外地将密码授予了Bitbucket Git存储库,这是当前主人后面的几个提交。当我以后通过不使用该密码删除密码时,它仍然存在于过去的几个提交中。

我不介意在这些提交期间失去变化的历史。我也不担心有人在犯下的密码中看到了密码,但是我想删除此历史记录以避免将来出现问题。

要确保在这些步骤之后,将来没有人可以访问此Bitbucket存储库的任何步骤可以找到此密码?

可以说,我有(假(sha1s(从最旧到最新(的提交:C001C002C003C004

c002和c003是我想完全删除的"坏"提交的哈希。我希望师父留在C004上,但是对于C002和C003,如果我让他们访问此存储库,则不再可以使用。我尝试按照类似问题的说明进行重置或重新命名的指示,但无法让它们工作;我要么设法删除机器上的提交,但是无法将其推回Bitbucket,要么在弄乱某些东西后完全在我的机器上删除。

有人可以解释所需的步骤:1.从存储库的历史记录中消除C002和C0032.确保它保存在bitbucket上,并且人们不能在Bitbucket的GUI中或通过将存储库克隆到其机器上

我很高兴能解释命令的答案,而不仅仅是写一些魔术git命令,这些命令要么有效,要么对我不起作用。另外,这个问题是关于Bitbucket的专门针对Bitbucket的……如果某些事情可能是特定的……我遇到了"更新被拒绝,因为您当前分支的尖端是落后的"使用重置 - 坚硬。经过几次失败的尝试和对Git的文档的沮丧,我决定这样做。

我要做的是:

git checkout revision-where-the-file-was-added
git rm the-file-with-the-password
git commit --amend --no-edit # fix the revision
git cherry-pick revision-where-the-file-was-added..the-branch # replay all later revision
# if you like the result
git branch -f the-branch
git push -f origin the-branch
git checkout the-branch

这假设添加文件后有一条修订。如果以后的历史中涉及合并,则可能需要在樱桃挑选中使用选项。

您可以组合rebasegit push origin master --force的组合来重写存储库的历史记录并强制更改,以便没有人能够在提交记录中查看密码。

从您的主分支中,您可以进行git rebase origin/master -i,然后可以进行edit推出密码的提交。然后运行 git add .添加它 - 然后 git commit --amendgit rebase --continue继续进行rebase。完成后,git push origin master强制将其推动并按照您想要的方式重写历史。

最新更新