2009-12-07 179 views
7

2個星期前,我提交了我的應用程序的配置,其中有我的密碼,這不是很有用。 如何從提交歷史記錄中刪除文件並確保它不會被重新提交?Git - 刪除並排除配置文件

我想從所有提交樹中刪除文件,因爲它包含我的密碼。

+0

究竟是你想做些什麼?你想恢復2周前發生的單一提交嗎? – BastiBen 2009-12-07 19:18:08

回答

18

可以

git rm myConfigFile 
echo myConfigFile > .gitignore 
git add .gitignore 
git commit -m "from now on, no more myConfigFile" 

另一個極端的做法(危險的,特別是如果你已經推你的回購到遠程的)將完全從上述回購的歷史記錄中刪除該文件:

git filter-branch --index-filter 'git update-index --remove myConfigFile' HEAD 

(小心使用,並與先備份)

問題How do I remove sensitive files from git’s history對這個敏感話題有更多的瞭解。

在這個過程中的問題是雙重的:

  1. 如果您的回購已經被克隆,你永遠無法保證機密信息將會從所有其他回購真的「水漲船高」。
  2. 當其他人嘗試在此之後拉下您的最新更改時,他們會收到一條消息,指出無法應用更改,因爲這不是快進。
    要解決此問題,他們必須刪除其現有存儲庫並重新克隆它,或者按照git-rebase manpage中的「RECOVERING FROM UPSTREAM REBASE」下的說明進行操作。
    在這兩種情況下,您的機密信息不會被「悄悄」更換或刪除...
+0

。黃金,謝謝! 。 – IvRRimUm 2016-12-13 14:50:08

1
cp my-config config.tmp 
git rm my-config 
git commit -m 'removed config' 
mv config.tmp my-config 
echo my-config >> .gitignore 
git add .gitignore 
git commit -m 'ignore config'