2012-11-24 42 views
1

我將爲一個項目招募一些開發人員。如果可能的話,我想繼續使用git repo,但是我不想讓歷史的一部分可以訪問(通過加密),只有我能夠接受它。原因在於我在歷史中清除了某些專有信息,例如在開發期間硬編碼到應用程序中的帳戶密碼。我不希望任何其他開發人員在沒有某種形式的身份驗證的情況下查看此信息如何隱藏/加密部分GIT歷史記錄?

顯而易見的解決方案是創建一個新的回購關閉這個頭,但我想保留完整的歷史,如果可能的話,因爲它有分支,我可能想在道路上使用。

+2

更改帳戶密碼。 – Gumbo

+0

不幸的是,我在任何地方都使用這些密碼,我不想給任何人甚至暗示我的密碼選擇啓發式。 – user805547

+1

好吧,這是另一個錯誤:密碼重用。 – Gumbo

回答

6

如果一個Git倉庫不能隱藏曆史的一部分,由於Git的工作方式,每次提交包括前面提交的散列,爲了使用Git倉庫,您需要擁有完整的歷史記錄。

但是,您確實有幾個選項。一種方法是用當前內容啓動一個新的存儲庫,並保留舊的存儲庫。然後,您可以將任何需要訪問舊歷史記錄的人員提供給舊版本庫。您仍然可以在兩個存儲庫中查看完整的歷史記錄。您可以通過爲每個舊的和新的每個添加遠程操作,然後使用git replace將舊的回購的最後一次提交附加到新的第一次提交。有關更多詳細信息,請參閱this question的答案。

另一種選擇是過濾歷史記錄。您可以使用git filter-branch --tree-filter在歷史記錄中的每個提交上運行一個腳本,用「password」替代所有密碼實例。這將保留完整的歷史記錄,儘管您的所有提交都將獲得新的提交ID。有關更多詳細信息,請參閱this question的答案。

這兩個選項都可以讓您保留完整的歷史記錄,同時不會泄露您的密碼。有一件事要記住,如果他們會改變實際的提交ID,所以你需要確保你所有的工作倉庫都是從新倉庫中檢出的,而不是舊倉庫,否則你可能會不小心將舊倉庫推到一個你的新回購。我建議更改舊回購中的任何密碼以防萬一,因爲一旦他們在那裏,可能很容易意外地透露它們。

0

我不確定這是最好的解決方案,但如果是我,我會創建一個新的回購庫,並在他們之間進行集成。 Github已經走了很長的路要讓這更容易。

1

由於git數據模型,這不是真的可行。但是,您可以嘗試:

  1. 確定處理此類敏感數據的所有提交。

  2. 做一個git的變基-i對於那些提交(根據您的回購規模,這種互動變基可深達數千提交的),並把這些提交的HEAD

  3. 的頂端重置這些提交

  4. 推用力

(這將改變歷史,但是如果做得正確,只能影響到莎號)

您需要爲所有分支機構完成此操作,並且這將很快失去控制。這就是爲什麼我會與Gumbo的建議去改變密碼。