我正在處理一組包含敏感信息(例如密碼)的文件。運行「git commit」時清除敏感信息
我正在使用版本控制,並且發現每次提交併推送此文件時都會刪除這些密碼,這很麻煩。
當我運行「git commit」時,有什麼方法可以在某處寫腳本來清除所有這些敏感信息?
換句話說,如果我的文件看起來像這樣:
var password = "test123"
我想我的文件看起來像這樣,當我將其提交:
var password = ""
我正在處理一組包含敏感信息(例如密碼)的文件。運行「git commit」時清除敏感信息
我正在使用版本控制,並且發現每次提交併推送此文件時都會刪除這些密碼,這很麻煩。
當我運行「git commit」時,有什麼方法可以在某處寫腳本來清除所有這些敏感信息?
換句話說,如果我的文件看起來像這樣:
var password = "test123"
我想我的文件看起來像這樣,當我將其提交:
var password = ""
標準(和正確的,真的)建議是將這些密碼保存在別處,例如,將它們從不同版本控制的文件(~/.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。