簡體   English   中英

Git:如何從遠程分支中排除某些文件,然后將它們包含在另一個分支中?

[英]Git: How can I exclude certain files from a remote branch and include them in another?

我有一個配置文件已提交到私有遠程存儲庫(又名私有)。 現在,我想與他人分享我的項目。 他們將有權訪問其他遠程存儲庫(AKA共享)。 我不希望查看共享內容的人能夠看到此配置文件。

  1. 我希望能夠在本地的一個分支上進行開發,但能夠推向私有和共享。
  2. 我不希望共享包含此文件的歷史記錄。 我想我將不得不對其進行調整。
  3. 我仍然希望能夠定期將提交推送到兩者。
  4. 理想情況下,我想避免使用push -f

Git是否提供執行此操作的機制?

將文件保留在分支之外的唯一方法是,從不在那里提交文件,並且永遠不要在該文件所在的任何其他分支上重新建立分支。 這是使它脫離歷史的唯一方法。

考慮在從未提交此文件的分支上工作,而僅將該分支推出到共享存儲庫。

然后,打開另一個分支,提交非共享文件,該分支存在。 然后,繼續將該分支重新部署到您的公共分支上。

如果您需要使用非公共文件進行測試,則必須切換到該分支,以主開發分支的開頭為基礎,然后在完成后切換回主開發分支,在該文件中不存在。 本質上,您的私有分支將始終是主開發分支之前的一個或多個提交,而額外的提交則是對非公共文件進行更改的歷史記錄。

這會有些痛苦,但這幾乎是我想到做這種事情的唯一方法。 如果您打算采用這種方式,我強烈建議您安裝一個提交鈎子(請參閱git文檔),該鈎子將檢查並確保非公共文件不會被意外提交到主開發分支。 這不太可能發生,但這是一個安全網。 我可能會看到的最常見的錯誤是忘記了您已將私有分支檢出,並在那里進行了一些提交。

如果您意識到這種情況,請不要返回主開發分支,並嘗試將其重新建立到私有分支上。 這會將文件納入主要開發分支的歷史記錄。 取而代之的是,從私有分支仔細地進行選擇,以使主開發分支保持最新狀態。

使用本教程從您的倉庫中刪除文件https://help.github.com/articles/remove-sensitive-data/

然后使用git-crypt使配置文件保持加密狀態,但仍由git https://github.com/AGWA/git-crypt跟蹤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM