簡體   English   中英

如何從BitBucket git存儲庫歷史記錄中刪除帶有密碼的提交?

[英]How to delete a commit with a password from BitBucket git repository history?

一段時間前,我不小心將密碼提交給BitBucket git存儲庫,當前主控方后面多次提交。 當我稍后通過不帶密碼的提交刪除密碼時,它在過去的幾次提交中仍然存在。

我不介意在這些提交期間丟失更改的歷史記錄。 我也不擔心在提交密碼時有人看到過密碼,但是我想刪除此歷史記錄以避免將來出現問題。

在采取這些步驟之后,應采取哪些步驟來確保將來沒有人可以訪問該BitBucket存儲庫的人找到該密碼?

可以說我擁有(假)SHA1的提交(從最舊到最新):c001 c002 c003 c004

c002和c003是我要完全刪除的“錯誤”提交的哈希值。 我希望master保持在c004上,但是如果我允許c002和c003不再對任何人訪問,則我可以使他們繼續使用。 我嘗試按照SO上類似問題的指示進行操作,這些指示提供了重置或重新設置基准,但無法使它們起作用。 我要么設法刪除計算機上的提交,但無法推回BitBucket,或者在弄亂了某些東西后無法完全刪除計算機上的提交。

有人可以解釋一下以下步驟所需的步驟:1.從存儲庫的歷史記錄中刪除c002和c003 2.確保將其保存在BitBucket中,並且人們無法在BitBucket的GUI中或通過將存儲庫克隆到他們的計算機中都無法查看這些提交

我希望能得到一個解釋該命令作用的答案,而不僅僅是編寫一些對我有用或不起作用的魔術git命令。 另外,這個問題是專門針對BitBucket的,以防某些事情可能是特定的……我在嘗試進行本地回購后將更改推回BitBucket時遇到“由於當前分支的尖端落后而導致更新被拒絕”的問題通過reset --hard進行更改。 經過幾次失敗的嘗試和對git的文檔感到沮喪后,我決定問SO。

我要做的是:

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強制通過它,並以您想要的方式重寫歷史記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM