技術筆記-當你不小心把「秘密」發佈到 git,要如何「清乾淨」?

更新 發佈閱讀 8 分鐘

如題,這應該是很容易犯的錯誤,據說 git 能使時光倒流!它就是這麼厲害,所以光是刪除檔案重新 commit 是沒用的,必須執行以下步驟:

(都是 chatGPT 教的,所以本文無創新價值,單純筆記增加熟練度)

# 1. 將檔案移出納管範圍,但注意加 --cached 就不會實體刪除檔案
git rm --cached gui/MySecretFile.pfx
------------------------------------
[main 3612398] remove cert file
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 gui/MySecretFile.pfx
------------------------------------

# 2. commit 到 local repository
git commit -m "remove cert file"
------------------------------------
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/newmanchurch/newman-console.git
2a9e44c..3612398 main -> main
---------------------------------

# 3. 同步到雲端
git push origin --force
-----------------------
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/newmanchurch/newman-console.git
2a9e44c..3612398 main -> main
---------------------------------


# 4. 「清洗」所有歷史紀錄,指令長到爆炸
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch gui/MySecretFile.pfx" \
--prune-empty --tag-name-filter cat -- --all
--------------------------------------------
Proceeding with filter-branch...

Rewrite 807cc8429eb6b68cf0aa63724080c4d362d4a170 (1/34) (0 seconds passed, remaining 0 predicted) rm 'gui/MySecretFile.pfx'
Rewrite bc433e86e272578c895c226c9d0e87a7a6b26a28 (2/34) (0 seconds passed, remaining 0 predicted) rm 'gui/MySecretFile.pfx'
Rewrite 6e1b5c278e171ecd87bf746da7bac9cb42102406 (3/34) (0 seconds passed, remaining 0 predicted) rm 'gui/MySecretFile.pfx'
Rewrite bcb38916c62bbc9a6d9f50870bc0c00dc8485d6d (4/34) (0 seconds passed, remaining 0 predicted) rm 'gui/MySecretFile.pfx'
...
Ref 'refs/heads/main' was rewritten
Ref 'refs/remotes/origin/main' was rewritten
--------------------------------------------

# 4.1 據說安裝一個 python 套件後,可以讓指令大幅精簡,但我沒試過:
pip install git-filter-repo
git filter-repo --path gui/MySecretFile.pfx --invert-paths


# 5. 同步到雲端
git push origin --force
-----------------------
​Enumerating objects: 219, done.
Counting objects: 100% (219/219), done.
Delta compression using up to 8 threads
Compressing objects: 100% (213/213), done.
Writing objects: 100% (219/219), 54.02 KiB | 4.50 MiB/s, done.
Total 219 (delta 151), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (151/151), done.
To https://github.com/newmanchurch/newman-console.git
+ f921b1b...07c383c main -> main (forced update)
-------------------------------------------------

到雲端網站檢查,成功清的乾乾淨淨,收工。

Newman 2024/12/10

導覽頁:紐曼的技術筆記-索引

後記:

順便筆記一些常用指令:

# 當本地端檔案改到亂掉了,就整個放棄修改,恢復到上一的 commit
git restore --source=HEAD --staged --worktree .

# 徹底放棄本地端的 repository,完全用雲端的版本來取代
# 使用時機就如本文狀況,遠端的所有歷史版本都經過清洗了,client 就不用一一清洗,直接取代
git fetch --all
git reset --hard origin/main
git pull


留言
avatar-img
newman的沙龍
32會員
151內容數
漫步是一種境界。
newman的沙龍的其他內容
2025/04/01
Reinforcement Learning (強化學習) 的理論非常有趣,可能是因為其中許多方法,與人類的學習歷程極為相似,如試錯,獎懲,改進策略,持續優化等等。現在準備來爬這座山了,我把學習階段大致分成三個小山峰,依序為 Q-Learning --> DQN --> Actor-Critic,
Thumbnail
2025/04/01
Reinforcement Learning (強化學習) 的理論非常有趣,可能是因為其中許多方法,與人類的學習歷程極為相似,如試錯,獎懲,改進策略,持續優化等等。現在準備來爬這座山了,我把學習階段大致分成三個小山峰,依序為 Q-Learning --> DQN --> Actor-Critic,
Thumbnail
2025/03/08
稍微看一下 Telegram 官方文件,哇!好強喔,功能說明的第一項赫然出現「可以取代整個網站」!口氣真的很大。雖然我的需求應該很低,但能夠確認前面是一座豐富的寶藏,還是很令人興奮的,待基本功能掌握之後,可以再評估和決定要不要往下挖。 發送訊息 要達成這第一個目標,首先必須建立一個 bot。
Thumbnail
2025/03/08
稍微看一下 Telegram 官方文件,哇!好強喔,功能說明的第一項赫然出現「可以取代整個網站」!口氣真的很大。雖然我的需求應該很低,但能夠確認前面是一座豐富的寶藏,還是很令人興奮的,待基本功能掌握之後,可以再評估和決定要不要往下挖。 發送訊息 要達成這第一個目標,首先必須建立一個 bot。
Thumbnail
2025/03/01
Line Notify 即將停止服務,隨著時間越來越緊迫,隱約聽到許多人在哀嚎。印象中有許多廠商,把 Line Notify 用得淋漓盡致,甚至可以一個客戶建一個群組,把許多客製化服務都用程式管理的井井有條,得到很好的滿意度。但這種好康,無限免費的即時訊息,沒有了,時間就在 2025/3/31!公告
Thumbnail
2025/03/01
Line Notify 即將停止服務,隨著時間越來越緊迫,隱約聽到許多人在哀嚎。印象中有許多廠商,把 Line Notify 用得淋漓盡致,甚至可以一個客戶建一個群組,把許多客製化服務都用程式管理的井井有條,得到很好的滿意度。但這種好康,無限免費的即時訊息,沒有了,時間就在 2025/3/31!公告
Thumbnail
看更多
你可能也想看
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 我們開發程式的時候, 常常會使用Git來管理我們的
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 我們開發程式的時候, 常常會使用Git來管理我們的
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
在進行Electron 專案時,後端夥伴選擇將 sqlite 資料庫跟專案檔打包成一個執行檔。在開發過程中,前端的操作經常會更動到 db的資料,此時 Git 就會追蹤到 db 的變化,因此前端在推送檔案到遠端 repo 前,會需要將其移出 Git 追蹤範圍,該怎麼做?
Thumbnail
在進行Electron 專案時,後端夥伴選擇將 sqlite 資料庫跟專案檔打包成一個執行檔。在開發過程中,前端的操作經常會更動到 db的資料,此時 Git 就會追蹤到 db 的變化,因此前端在推送檔案到遠端 repo 前,會需要將其移出 Git 追蹤範圍,該怎麼做?
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
每個人的寫作習慣不一樣,我的習慣是每章分開存檔,除了方便查看外,檔案間也不會互相影響。另外就是,發佈文章時,能夠快速的生成章節目錄,方便快速的進行作業。 而要做到這點,也非常的容易,只要打開記事本,輸入六字符(只佔兩個中文字),並自訂檔名,最後於存檔前,將副檔名 .txt 改為 .bat 檔,
Thumbnail
每個人的寫作習慣不一樣,我的習慣是每章分開存檔,除了方便查看外,檔案間也不會互相影響。另外就是,發佈文章時,能夠快速的生成章節目錄,方便快速的進行作業。 而要做到這點,也非常的容易,只要打開記事本,輸入六字符(只佔兩個中文字),並自訂檔名,最後於存檔前,將副檔名 .txt 改為 .bat 檔,
Thumbnail
如題,這應該是很容易犯的錯誤,據說 git 能使時光倒流!它就是這麼厲害,所以光是刪除檔案重新 commit 是沒用的,必須執行以下步驟: # 1. 將檔案移出納管範圍,但注意加 --cached 就不會實體刪除檔案
Thumbnail
如題,這應該是很容易犯的錯誤,據說 git 能使時光倒流!它就是這麼厲害,所以光是刪除檔案重新 commit 是沒用的,必須執行以下步驟: # 1. 將檔案移出納管範圍,但注意加 --cached 就不會實體刪除檔案
Thumbnail
科技力 硬碟清除大解密-3種資料清除工具守護您的資訊安全 當您計畫處理或售出您的舊硬碟或電腦時,您必須確保您的個人資料得以妥善處理,以免敏感資料不慎流落至不當之處。本文將深入介紹如何有效進行硬碟資料清除,確保您的資訊永久無法恢復。我們將探討各種不同的硬碟清除方式、選擇適合的工具和軟體,並提供清除
Thumbnail
科技力 硬碟清除大解密-3種資料清除工具守護您的資訊安全 當您計畫處理或售出您的舊硬碟或電腦時,您必須確保您的個人資料得以妥善處理,以免敏感資料不慎流落至不當之處。本文將深入介紹如何有效進行硬碟資料清除,確保您的資訊永久無法恢復。我們將探討各種不同的硬碟清除方式、選擇適合的工具和軟體,並提供清除
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News