不要把配置文件放到你的 Git 代碼倉庫

jopen 9年前發布 | 10K 次閱讀 Git

我總是驚訝地發現在一些私有的 git 倉庫中缺乏管理。查看一個 git 倉庫與之達成新的約定是我最恐懼的時刻之一。誠然,git 倉庫中包含的文件應該是有個范圍的。這可以優化開發和部署。

提交附加文件可顯著提高下載(克隆一個倉庫時)的時間,避開提交這些文件還有很多理由。非技術的發起人,可以使用這個原則作為指導,以確保你的團隊是在聰明地提交代碼。

編譯后生成的文件/二進制文件

不要在一個 git 資源庫中將你編譯后生成的文件或者二進制文件包含進去!二進制文件 (或者可執行文件) 幾乎總是將和操作系統相關的。如果你有一些開發使用 Mac 電腦,一些使用 Window,而一些使用 Linux —— 或者是這些操作系統的組合,那么這就會很令人頭疼。甚至同一個操作系統的不同版本都有可能會造成問題。

此外,git 并不能很好的適用于二進制文件版本的比較。開發者要提交編譯后的文件常常會造成惱人的合并沖突,打斷“典型”的(或者至少是最佳狀況下的) 提交請求流程。最好的選擇就是存儲源代碼,然后讓每個開發者在本地對其進行編譯,或者使用一個構建服務器和公共的測試機器。

最后要注意,也不要包含哪些不是二進制文件的編譯后的文件,因為這些文件會存儲冗余的數據,git 資源庫的會因此而不必要的變大。

圖片/視屏/音樂/pdf

這些類型的文件實際上也是作為二進制文件被存儲的,所以上面的規則在這里仍然適用。不過,當可以選擇配備一些共享服務器,并在部署期間將多媒體資源引用進來時,將這些文件留在資源庫中還是很容易的。此外, 當然也有充分的理由 (讀取:文件保險) 來提交這些類型的文件。不過,因為 git 會在每次發生變化時都對整個二進制文件進行存儲,這些文件將肯定會使得資源庫的規模發生膨脹 - 特別是當他們經常發生變化時。

依賴

不要在 git 資源庫中將下載過來的依賴包含進去! 這包括 Python 包和 Node 模塊或者 Bower 組件。而是將諸如針對 Python/Pip 的 "requirements.txt" 文件或者針對 Node 的 "package.json" 文件這類對于依賴的引用包含進去。即使是一種解釋型語言(比如 Python 和 Node)中的依賴,也常常會以特定于系統的方式被編譯和安裝。這也將會使得在不同系統/架構上進行的開發讓人感覺痛苦。如果依賴引用被提交了,那么每個開發者都可以在資源庫被克隆下來之后自行去獲取到這些依賴。

專家建議:可以的話就要確保 "node_modules", "bower_components", "env", 以及 "target" 都包含在你的 .gitignore 文件中。

配置文件

永遠不要把配置文件放在 GIT 倉庫中!即使你百分之一百肯定沒有人可以根據你暴露在配置文件中的密碼和數據庫連接信息來攻擊你的系統, 對于其他開發人員來說這也將是一個噩夢。配置文件中的信息常常是和機器有關的(比如機器的 host name,ip 地址等等),特別對于那些不是使用虛擬機或者容器技術來進行開發的開放人員來說,更是如此。在這種情況下,開發人員之間經常會因為配置文件內容的不同而發生爭吵。所以,請不要把配置文件放到 GIT 倉庫中。

和操作系統相關的隱藏文件和第三方軟件創建的文件

這個章節主要是針對工作在 OS X 上的開發者,對于這些開發者而言,提交一個名字叫".DS_store"文件夾下面的文件并不會讓其他工作在 linux 下的開發者對你影響特別深刻。在通常情況下,但你創建 GIT 倉庫的時候,在 gitignore 文件中指明忽略一切以 dot 開頭的文件/文件夾(一般是隱藏文件)是一個非常好的選擇。對于我而言,我一般將我的開發環境文件命名成 .env,將配置文件命名成 .config.json,這樣通過在 gitignore 文件中指明忽略一切以 dot 開頭的文件就自動將配置文件過濾掉了。

最后,如果你在使用一個第三方的文件系統工具,請確保這些工具沒有輸出任何的隱藏文件/文件夾到你的 GIT 倉庫目錄中。在大多數情況下,這下隱藏文件/文件夾是完全和 GIT 倉庫無關的。

結論

關于應該不提交哪些文件到 GIT 倉庫,底線就是請站在其他開發人員的角度來思考。再次強調一下,請善用 .gitignore 文件來過濾掉不需要提交的文件/文件夾。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!