banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

github不小心上傳了敏感文件操作該如何撤消?

在使用 GitHub 的過程中,假如某次提交代碼時不小心將敏感信息提交進了公共倉庫。

如果發現得及時,本地提交後還沒有推送到 GitHub 遠程倉庫的話,這種情況還好處理,直接修改代碼後通過git commit --amend即可。

但如果發現時已經推送到了 GitHub 遠程倉庫,或者已過了許久,後續有了很多新的 commits,這種情況就會比較複雜了。

1、第一步

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 你要刪除的文件(相對項目的路徑)" --prune-empty --tag-name-filter cat -- --all

如下:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch ./picgo/20220418121957.png' --prune-empty --tag-name-filter cat -- --all
  • --force:強制執行操作,即使會丟失一些提交。
  • --index-filter:通過對索引進行操作來修改歷史記錄,後面的 'git rm --cached --ignore-unmatch ./picgo/20220418121957.png' 表示要執行的具體命令,即移除指定路徑對應的文件。
  • --prune-empty:在處理過程中,移除空的提交。
  • --tag-name-filter:對標籤進行操作,cat 表示保持標籤名稱不變。
  • -- --all:表示將命令應用於所有分支和標籤。

2、第二步

強制推送所有分支和標籤

git push origin --force --all
git push origin --force --tags

3、第三步

git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin #刪除 refs/original 引用中的每一個引用
git reflog expire --expire=now --all #清理所有引用(分支、標籤等)的reflog。reflog記錄了引用的移動、重置等操作歷史
git gc --prune=now #用於垃圾回收,即清理不再需要的對象
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。