2016-07-07 31 views
0

我只是把一個私有的存儲庫放到一個公共的github倉庫中,放在一個小型的rails應用程序的bitbucket上。爲了方便和備份目的,私有存儲庫包含db/development.sqlite3文件。看到我的應用程序現在有少量的用戶,我認爲它不負責在公有領域提供他們的電子郵件地址等。現在,我已經提前完成並從git存儲庫中刪除了緩存的development.sqlite3文件,並將這些更改推送到了兩個庫。但是,我想繼續將sqlite3數據庫推送到我的私有存儲庫。它非常方便我的小小應用程序。我該如何使用.git/info/excludes來防止諸如development.sqlite3之類的安全文件被推送到特定的存儲庫而不是其他文件?

我發現了一些令人失望的模糊引用.git/info/excludes文件作爲一種可能防止git推送某些文件到某些存儲庫,即here (SO question)here的方式。

我甚至不確定這些「解決方案」是否甚至會讓我做我想做的事情,即讓git忽略某個存儲庫的某些文件類型,而不是在同一個提交中忽略另一個存儲庫的某些文件類型。這似乎不合邏輯。所以也許這是不可能的。請指教。

備註: 如果這個問題沒有答案,即如果通過上述引用的方法或其他方式無法解決,請評論一下您是否認爲我應該完全拒絕這個問題。我很矛盾。

回答

1

也許它可以通過post-checkout鉤子來實現。

不要將sqlite3數據庫推送到您的私人回購。將它存儲在本地機器的某個地方。製作一個post-checkout鉤子,當您在git倉庫中運行git checkout時,鉤子可以將數據庫複製到您的倉庫中。

現在我已經走了,並從git存儲庫中刪除了緩存的development.sqlite3 文件。

只是一個提醒,不知你是否已經從整個提交歷史中刪除數據庫。如果你不介意它仍然可以檢出,只要忽略它。

參考:

後結帳

當一個git結帳具有被更新的 後worktree運行該鉤子被調用。鉤子被賦予三個參數: 前面的頭的引用,新頭的引用(可能或可能沒有 變化)以及指示結賬是否是分支的標誌 結帳(改變分支,標誌= 1)或文件簽出(從索引檢索 文件,flag = 0)。這個掛鉤不會影響git結賬的結果 。

它也在git clone之後運行,除非使用--no-checkout(-n)選項 。給鉤子的第一個參數是null-ref,新頭的ref是 秒,旗子總是1。

該掛鉤可用於執行存儲庫有效性檢查, 自動顯示與先前HEAD不同的差異,或設置 工作目錄元數據屬性。

相關問題