2012-02-10 50 views
2

有沒有辦法隱藏某些用戶的提交?我想公開私人回購,但不希望人們看到我所有的舊提交。其中一些有密碼和API密鑰。其他人與我想提供的內容無關。在開源項目時處理先前的提交

私人回購目前託管在GitHub上。我想翻轉開關並將其設置爲Public和Open Source,但這會揭示我不希望人們看到的舊提交。

我知道我可以採取的一種方式是創建一個全新的存儲庫,但我已達到我的帳戶的回購限制。尋找解決問題的最快速和最簡單的方法。開放任何方法的作品 - 包括創建一個新的回購,如果這恰好是最好的方式。

回答

2

如果確實「隱藏」了這些提交,那麼您將有效創建新的回購。提交的SHA1取決於其所有內容,並取決於其父母,因此更改單個提交會改變以後的所有內容。

如果要隱藏的東西的範圍很大,您最好不要導出任何歷史記錄。但希望事情是相當孤立的,你可以用git filter-branch來解決你的問題。這個聯機幫助頁描述了它的功能,包括幾個玩具示例(例如如何從歷史記錄中刪除文件),還有更多的示例在線,包括這裏。您最終可能會進行多次傳球,例如一個刪除某些文件,一個刪除某些類型的提交。

關鍵的事情可能對你有用:

  • --index-filter會讓你刪除或重命名一組給定文件或目錄的 - 它只是讓你修改索引,而不檢查出文件,所以它很快;

  • --env-filter會讓你很快地重寫作者/提交者信息;和

  • --tree-filter,不得已而爲之,實際上在每一步檢查出整個樹,讓你就地修改文件(例如搜索和替換刪除密碼)

過濾分支完全重寫您指定的任何參考文獻的所有歷史記錄,並將原始參考文獻留在參考文獻/原件中,以備需要時使用。出於各種各樣的原因,最重要的是安全性,最好在新的克隆中使用它。

0

沒有辦法隱藏存儲庫中另一個用戶的提交。

另一方面,您可以在本地存儲庫中做所有您想要的事情,包括重寫歷史來壓縮或省略這些提交。

然後,爲安全起見採取另一個私人回購的克隆,刪除它,創建一個新的,並從修改後的版本推送到新的存儲庫。

這需要一個事實,即一個Git倉庫的任何克隆是整個事情的優勢...

0

您可以到壁球提交在一起或當前代碼導出到一個新的存儲庫,但是,真的打敗了開源項目的目的。如果有人發現了一個bug,想跟蹤它如何進入代碼並且不能,因爲它是在你被壓扁的一個提交中引入的?