繁体   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