2009-08-27 117 views
25

我的git倉庫包含敏感的密碼,這些密碼由於我無法控制的原因而無法立即刪除。現在一切都好,因爲這個回購只是內部的,但我被要求創建一個可以安全地與合作伙伴分享的分支。沒有歷史的git分支

有沒有辦法在git中創建分支,然後以無法使用日誌檢索的方式從中刪除文件?

看起來像一個遠射,但我想我會問。我能想到的唯一解決方案是將文件樹複製到新的git倉庫中,但沒有敏感文件 - 但是我失去了將合作伙伴更改合併回我的倉庫的能力。

回答

29

你可以做的一件事是創建你的倉庫的一個分支,編輯出密碼,然後創建一個你將提供給合作伙伴的倉庫的淺層克隆(深度爲1)。他們可以製作補丁,而不是針對該克隆,但無法查看整個歷史記錄,也無法在其他任何地方推送回購。如果他們只是在做出改變,那麼這應該是一個可行的解決方案。您仍然可以接受來自它們的修補程序並將其應用到主存儲庫。

有關更多信息,請參閱的--depth選項。

+0

我覺得這個解決方案將工作爲Ben的情況更好。以分公司爲基礎管理訪問比在分支基礎上更容易。 – Apreche 2009-08-27 20:38:13

+4

'git clone --depth 1 [email protected]:project/projectname.git' - 複製並粘貼 – YumYumYum 2014-03-19 07:09:56

5

使用filter-branch

假設你要刪除一個文件 (包含機密信息的 或侵犯版權)所有 提交:

git的過濾分支--tree過濾器「RM文件名'頭

+0

1.)'--index-filter'應該比'--tree-filter'快於刪除文件。 2.)如果您不想更改存儲庫,請先創建新分支並重新編寫它。 – 2009-08-27 21:30:52

+0

是的,關於我鏈接到的文檔中的各種技術有很好的討論 – 2009-08-27 21:39:11

0

我會採取刺一些答案。讓我們假設您可以創建一個不包含敏感數據的分支。你云然後做一個分支的淺層克隆,它不包含歷史,因此你不能從中拉出來,但它可能會拉你的形式。

另一件事是克隆新的存儲庫並使用git刪除工具來清除敏感數據。這將創建一個獨特的存儲庫,除了通過第一個補丁程序之外不能進行交互,但會擁有所有的歷史記錄。

5

混帳克隆--depth 1 url_of_your_remote_repository

淺庫

  • ,您無法克隆或從淺存儲庫中取出(這意味着使用這個你不能讓一個新的存儲庫的侷限性淺拷貝)

  • 你無法使用git log命令查看整個歷史記錄。

  • 其可行的解決方案,您的合作伙伴可以進行一些更改並將其作爲「補丁」並將其發送給您的合作伙伴,如果您想要更改合作伙伴。然後在您當前的工作樹/您想要應用的任何分支中應用該修補程序。

    More

相關問題