Git:对公共代码和部署代码有两种不同的repo

Git:对公共代码和部署代码有两种不同的repo,git,deployment,version-control,git-branch,Git,Deployment,Version Control,Git Branch,我有一个本地repo,其中包含云部署的所有代码。此repo包含大量特定于云的敏感文件。所有这些文件都已提交到部署云上托管的私有远程repo。现在,我想用某种方法将代码提交给公共回购协议,同时排除所有敏感数据文件。我经历过,但我觉得我的情况有点不同。我当前的本地回购已包含所有未添加到.gitignore文件的敏感文件。如果我碰巧从部署分支创建了一个公共分支,如下所示: deployment: A ---> B ---> C ---> D

我有一个本地repo,其中包含云部署的所有代码。此repo包含大量特定于云的敏感文件。所有这些文件都已提交到部署云上托管的私有远程repo。现在,我想用某种方法将代码提交给公共回购协议,同时排除所有敏感数据文件。我经历过,但我觉得我的情况有点不同。我当前的本地回购已包含所有未添加到.gitignore文件的敏感文件。如果我碰巧从部署分支创建了一个公共分支,如下所示:

deployment:       A ---> B ---> C ---> D
                   \      \      \      \
                    \      \      \      \
public:           -> A'  -> B'  -> C'  -> D'
然后,对于第一次迭代(A),我将再次在我的repo中保存所有这些敏感文件。然后,我必须处理掉所有这些敏感文件,修改我的.gitignore以在将来排除这些文件,然后将公共分支推到远程

然而,我想不出这将如何在未来进行

我应该将我的公共分支合并到部署中吗?(我认为没有)

在更新部署代码时,如何将这些更改传播到公共分支?在这种情况下,我应该将部署分支与公共分支合并吗

有没有更简单的方法来完成这一切?

你能帮我修改一下应用程序吗?换句话说,您可以将所有敏感配置数据移动到环境变量中,还是移动到未签入版本控制的单个配置文件中?(您可能会签入该文件的“假样本”版本,其中包含假数据,作为创建真实配置文件时使用的模板。)


如果您能做到这一点,那么您只需跳一次git敏感数据删除舞,然后发布代码。作为部署的最后一步,您的部署过程将从存储库外的已知位置获取配置文件,或设置环境变量或类似的内容。

根据其他地方的一些建议,我提出了维护项目的两个副本。一个用于部署,另一个用于公开查看。每次提交到部署repo时,我都会将更改的文件复制到公共repo,并同时将它们提交到公共repo,这样部署和公共将彼此同步,并且不会丢失提交历史记录。显然,所有这些都是通过一个脚本实现的,该脚本将所有敏感文件从复制到公共repo中排除。