2016-08-11 37 views
0

有是致力於一個大約一個月前,倉庫,我想徹底刪除的任何跟蹤一些敏感信息。刪除歷史git的承諾,因此不會出現在「混帳登錄-p」

我善於使用git rebase,並且知道我可以使用它來更改提交,並且像How to delete a 'git commit' from LOG, like it had never existed這樣的答案顯示如何使用git rebase刪除提交。

但是,違規的預衍合哈希承諾仍然是瑪麗薩使用

git log -p $BAD_SHA 

所以,即使出現承諾不再git log下,使用上述命令的人仍然甚至可以看到敏感信息儘管它已被「刪除」使用rebase。

有沒有辦法基本上完全刪除已重訂後,SHA,使其不再顯示了使用git log -p $BAD_SHA


附錄:我曾嘗試墊底後git gc --prune=all --aggressive,而這並沒有解決問題。本地或遠程存儲庫上都沒有分支,它仍然引用我想要擺脫的壞散列。

+0

您是否嘗試清除reflog? 混帳引用日誌到期--expire =現在--all – nimeshjm

回答

1

如果提交在任何現有分支上都不可見,則垃圾回收應該照顧它。

git gc --prune=all 
+0

我試過'git的GC --prune = all'和'混帳GC --prune =所有--aggressive',但違規SHA仍然出現在'混帳日誌-p $ BAD_SHA'。在整個存儲庫中只有一個分支,既在本地也在遠程。 – Manmaru

+0

看是否有此發現它的任何引用:'git的描述 - 所有--contains $ BAD_SHA' –

+0

感謝您指出我在正確的方向 – Manmaru

0

事實證明,與git gc --prune=all --aggressive執行垃圾收集後,我還需要在本地徹底刪除存儲庫,然後再重新克隆它。現在違規提交沒有出現在git log -p $BAD_SHA中。

+0

這應該由垃圾收集完成。也許它還沒有資格。 –