2014-11-21 81 views
1

我正在處理一組包含敏感信息(例如密碼)的文件。運行「git commit」時清除敏感信息

我正在使用版本控制,並且發現每次提交併推送此文件時都會刪除這些密碼,這很麻煩。

當我運行「git commit」時,有什麼方法可以在某處寫腳本來清除所有這些敏感信息?

換句話說,如果我的文件看起來像這樣:

var password = "test123" 

我想我的文件看起來像這樣,當我將其提交:

var password = "" 

回答

2

標準(和正確的,真的)建議是將這些密碼保存在別處,例如,將它們從不同版本控制的文件(~/.netrc等)中讀出。這就是說,你可以使用pre-commit鉤子來檢查索引中的密碼,如果存在則中止提交(這又是標準的建議:不要在預提交鉤子中修改事物,只是告訴用戶有什麼不對,並停止)。或者,甚至可以讓預提交鉤子調整索引,以便密碼不存在。

請注意,預先提交鉤子可以被用戶繞過,所以這不是萬無一失的,無論您如何設置它(作爲驗證者或修改器)。


請記住,新的承諾將從指數,而不是工作目錄的內容製作。例如:

$ echo this is what will be committed > foo.txt 
$ git add foo.txt     # put current foo.txt into the index 
$ echo the current contents are completely different > foo.txt 
$ git commit -m 'demonstrate index vs work dir' 

foo.txt在提交此創建版本寫着「這就是將致力於」,儘管「目前的內容是完全不同的」是什麼,是在foo.txt如果你現在看它。要查看索引,使用實際上是,例如:

$ git cat-file -p :0:foo.txt 

什麼:0:foo.txt手段見gitrevisions