我想開源一些我在GitHub上完成的web項目,但是有一些文件包含數據庫密碼以及我不想明顯包含的內容。GitHub/BitBucket開源項目的最佳路徑,但不共享敏感文件?
我可以git rm
這些文件,或將它們添加到我的.gitignore
,但這將它們從git和版本控制一起刪除,我不想這樣做。
我怎樣才能使它所以當我把我變成一個回購,只有某些文件被列入?
我想開源一些我在GitHub上完成的web項目,但是有一些文件包含數據庫密碼以及我不想明顯包含的內容。GitHub/BitBucket開源項目的最佳路徑,但不共享敏感文件?
我可以git rm
這些文件,或將它們添加到我的.gitignore
,但這將它們從git和版本控制一起刪除,我不想這樣做。
我怎樣才能使它所以當我把我變成一個回購,只有某些文件被列入?
我通常建議人們在這種情況下,使用「模板」模式的git的子模塊。
例如,你有一些application.settings
文件,它包含的東西像數據庫密碼,端口綁定。將該文件複製到application.settings.template
,並去除所有特定於站點的信息,例如密碼和端點,只留下您想要作爲默認設置的設置。
然後,添加application.settings
您.gitignore
。任何時候當你引入一個新的設置時,你都必須調整這兩個文件,但是這可以讓其他人通過查找*.template
文件很容易地看到要配置的內容。他們只需要複製這些文件並刪除.template
擴展名,然後根據需要對其進行自定義。
這有一定的優勢:
git reset --hard
,重挫作爲實際的設置文件不被Git的跟蹤。git stash && git checkout other-branch && git stash pop
如果目標分支有不同的設置文件比當前分支,並且開發者使本地更改設置文件)。的缺點是,在模板中新/修改的設置不能合併到一個部署的設置文件(但如果你是在生產中,你可能要檢查的模板文件中的差異和應用那些反正手)。在拉出或檢出新分支後,必須手動git diff HEAD [email protected]{1} -- application.settings.template
才能查看設置模板中更改的內容。
您可以使用由私人託管,幷包含在你的主要的git回購
如果(1)專用URL不包含敏感信息,並且(2)這是存儲庫中唯一的子模塊,則這將起作用。 (當一個失敗時,Git將停止提取子模塊,所以這可能會阻止其他子模塊被正確提取。) – cdhowie
請注意,如果您之前添加了這些文件,你需要使用[過濾分支(https://www.kernel.org/pub/software/scm/git/docs/git-filter-branch。 html)將它們從以前的版本中刪除;否則人們仍然可以通過回顧歷史來閱讀它們。 – remram