2011-12-03 41 views
0

沿着代碼可能會有非常敏感的信息,如密碼,亞馬遜s3密鑰等,我不希望被髮送到git。推送到git時忽略特定的行

我想這些非常具體的領域要麼被替換爲「祕密」或類似的東西。 另外,是解決這個git私人回購?

+1

答案不是把這些東西放在被跟蹤的文件中。我會建議一些重複... – Cascabel

+0

也http://stackoverflow.com/questions/2154948/how-can-i-track-system-specific-config-files-in-a-repo-project/2155355# 2155355 – Cascabel

+0

@ RailsN00b:檢查答案上的編輯。我不認爲你想要我添加的內容,但爲了以防萬一... – Throoze

回答

3

因爲git跟蹤文本而不僅僅是文件,所以用git替換這些行會被git解釋爲代碼的改變,所以它會覆蓋下一次提交中的原始敏感信息。

我在這些情況下做的事情是模塊化我的代碼,以便將這些信息隔離在一個文件中,然後向文件.gitignore添加一行文件名。

.gitignore文件是一個模式集合,每行一個文件名,在跟蹤repo中的變化時被git忽略。例如,如果我正在使用php編寫web系統,我創建了一個文件,該文件僅存儲關於連接到數據庫的證書信息(框架也使用這樣做,所以您可以猜測這是一個好習慣。 ..)。所以我使用測試服務器憑證(我的合作者應該知道)或者使用某些虛擬憑證編寫該文件,提交併將其推送到遠程,然後將文件名添加到我的.gitignore

另一方面,你有命令git add -p,它交互式地讓你跳過行,但是這會導致一個文件沒有在你的遠程回購中提到的行,你必須在每次添加時手動跳過行該文件...

一個很好的參考git是Progit。強烈推薦,如果你開始與GIT ...此外,Github's help center是一個非常好的地方看看。

我希望這會對您有所幫助!祝你好運!!!

+2

除此之外,我們曾經做過的事情是使用正確的結構,但沒有任何敏感數據的文件版本,另存爲'.template'文件旁邊應該是真實的。然後,當你有一個新的團隊成員,或軟管你的回購,並重新設置或什麼的,你可以複製文件並填寫空白。您也可以爲包含路徑的項目文件執行此操作... – MattJenko

+0

@MattJenko:我從來沒有這樣做過!這是一個不錯的主意!謝謝! =) – Throoze