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

更新於 2024/12/10閱讀時間約 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
22會員
102內容數
漫步是一種境界。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
newman的沙龍 的其他內容
這一趟越走越興奮的旅程,從 測試富邦新一代 api 開始,很自然的開始 用 python 造出自己的 gui 程式,本來也不想學太多有的沒的,頂多三五分鐘用 api 監控一次市場行情,就可以玩出很多策略了,沒想到 api 一個小小的不完美,迫使我把手伸進 socket 領域了。 原來我想監控的
開始玩 python gui,首先稍微交代一下背景,這種 client-server 的應用架構,一直以來是我所唾棄的方式,因為:每個前端都需要安裝,所以若要部署給多人使用,很麻煩,每個人的電腦環境千奇百怪,難保平台與各種軟體均能相容。所以出問題時原因難查,若軟體是銷售的,也容易有爭
雖然公眾資料庫和網路爬蟲,已經可以玩得不亦樂乎了,但所有研究最終的目的,還是要實施於一個真實賬戶,真金白銀的實際效益才有意義。尤其是「即時」性要求較高的策略,一定需要用程式補上「自動化下單」的部分,快速變動的資料如「行情報價」,「訂單狀態」,「帳戶庫存」等等,也需要程式嚴密監控,這就需要券商提供
「最佳化」是很酷的觀念,因為現實世界中許多問題,並沒有嚴謹一致的公式解,但可以利用計算機高速運算能力,透過巧妙的演算法,迭代式反覆逼近最佳解,應用領域非常廣。若能多瞭解一點原理,一定可以提昇解決問題的能力。今天從網路上發現一堂手把手的教學課程,就來演練一下整個過程。期望徹底了解之後,後面可以
現有的家是 azure,功能多又有免費額度,算是堪用,只是因為雲端產業蓬勃發展,想體驗一下新東西,所以這次來玩玩新東西 fly.io。從開啟以下賞心悅目的官網,第一次接觸到成功佈署上線,大概半小時就搞定了,體驗不錯,以下稍做紀錄。
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
這一趟越走越興奮的旅程,從 測試富邦新一代 api 開始,很自然的開始 用 python 造出自己的 gui 程式,本來也不想學太多有的沒的,頂多三五分鐘用 api 監控一次市場行情,就可以玩出很多策略了,沒想到 api 一個小小的不完美,迫使我把手伸進 socket 領域了。 原來我想監控的
開始玩 python gui,首先稍微交代一下背景,這種 client-server 的應用架構,一直以來是我所唾棄的方式,因為:每個前端都需要安裝,所以若要部署給多人使用,很麻煩,每個人的電腦環境千奇百怪,難保平台與各種軟體均能相容。所以出問題時原因難查,若軟體是銷售的,也容易有爭
雖然公眾資料庫和網路爬蟲,已經可以玩得不亦樂乎了,但所有研究最終的目的,還是要實施於一個真實賬戶,真金白銀的實際效益才有意義。尤其是「即時」性要求較高的策略,一定需要用程式補上「自動化下單」的部分,快速變動的資料如「行情報價」,「訂單狀態」,「帳戶庫存」等等,也需要程式嚴密監控,這就需要券商提供
「最佳化」是很酷的觀念,因為現實世界中許多問題,並沒有嚴謹一致的公式解,但可以利用計算機高速運算能力,透過巧妙的演算法,迭代式反覆逼近最佳解,應用領域非常廣。若能多瞭解一點原理,一定可以提昇解決問題的能力。今天從網路上發現一堂手把手的教學課程,就來演練一下整個過程。期望徹底了解之後,後面可以
現有的家是 azure,功能多又有免費額度,算是堪用,只是因為雲端產業蓬勃發展,想體驗一下新東西,所以這次來玩玩新東西 fly.io。從開啟以下賞心悅目的官網,第一次接觸到成功佈署上線,大概半小時就搞定了,體驗不錯,以下稍做紀錄。
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
這篇文章描述了作者對於生活中遺留的習慣、記憶和物品的反思和回憶。作者選擇以網路書寫的方式來重新梳理和分享這些記憶。從筆記的撕下到數位工具的使用,都展現了作者對於記憶整理的執著和努力。
Thumbnail
★檢視自己與物品之間的關係,進而規劃美好未來的願景。
Thumbnail
上一篇講到遇到的阻力,就是我好不容易從追星找到一個給自己開始調適整理自己的方式,然後呢...
Thumbnail
我認為每天檢視當天發生的好事壞事,並且整理分類,如同在做定期大掃除,分辨哪些是好的要留下,哪些是不好的要清掉,這樣定時清掃心裡,真的有很大的幫助。 一陣子之後會發現,留下來的都是好的、正向、有力量的事情,而這些留下來好的因子,將會強化自己對於自我價值、自信、溝通、社交的累積。
Thumbnail
透過整理家裡的東西,我們可以重新審視自己之前的生活習慣,也能更瞭解自己現在的需求。或許我們可以透過這個過程放下身上及心中的包袱,並且獲得更輕鬆的感覺。
Thumbnail
總結文件整理的三大分類: ​ ###「待處理事項」:賬單、股東會通知書、等等。 ###「重要文件」:重要契約、身份或專業技能證明文件、等等。 ###「短期留存」:進兩年的體檢報告、舊筆記、等等。
Thumbnail
整理物品其實是在整理人生,關係的斷捨離與界線的界定,如何捨掉「執著」?如何透過斷捨離讓生活重新流動?讓人生更自覺、自在!
Thumbnail
近一個月未更新,不是懶不是累,而是在年前大掃除,分享一點日常心情和整理心得,但僅僅只是打掃自己的房間,就花了大約四天,因為東西實在多,加上一些細節整理,所以花了超多時間~~
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
這篇文章描述了作者對於生活中遺留的習慣、記憶和物品的反思和回憶。作者選擇以網路書寫的方式來重新梳理和分享這些記憶。從筆記的撕下到數位工具的使用,都展現了作者對於記憶整理的執著和努力。
Thumbnail
★檢視自己與物品之間的關係,進而規劃美好未來的願景。
Thumbnail
上一篇講到遇到的阻力,就是我好不容易從追星找到一個給自己開始調適整理自己的方式,然後呢...
Thumbnail
我認為每天檢視當天發生的好事壞事,並且整理分類,如同在做定期大掃除,分辨哪些是好的要留下,哪些是不好的要清掉,這樣定時清掃心裡,真的有很大的幫助。 一陣子之後會發現,留下來的都是好的、正向、有力量的事情,而這些留下來好的因子,將會強化自己對於自我價值、自信、溝通、社交的累積。
Thumbnail
透過整理家裡的東西,我們可以重新審視自己之前的生活習慣,也能更瞭解自己現在的需求。或許我們可以透過這個過程放下身上及心中的包袱,並且獲得更輕鬆的感覺。
Thumbnail
總結文件整理的三大分類: ​ ###「待處理事項」:賬單、股東會通知書、等等。 ###「重要文件」:重要契約、身份或專業技能證明文件、等等。 ###「短期留存」:進兩年的體檢報告、舊筆記、等等。
Thumbnail
整理物品其實是在整理人生,關係的斷捨離與界線的界定,如何捨掉「執著」?如何透過斷捨離讓生活重新流動?讓人生更自覺、自在!
Thumbnail
近一個月未更新,不是懶不是累,而是在年前大掃除,分享一點日常心情和整理心得,但僅僅只是打掃自己的房間,就花了大約四天,因為東西實在多,加上一些細節整理,所以花了超多時間~~