Heroku,Github和Asp.net核心,如何管理appsettings.json?

时间:2018-12-14 23:16:54

标签: git github heroku asp.net-core asp.net-core-2.1

如何将asp.net核心项目推送到Github和Heroku,而仅将appsettings.json推送到Heroku?

我尝试了GitFlow模型,在所有分支中将appsettings.json添加到.gitignore,但是我命名为heroku_app并配置了--set-remote-to=heroku/master的那个,因此Github不会将其视为只要我从未将其合并到Github可以看到的分支上即可。

但这无法按预期工作,因为每次我实施要掌握的功能时,然后依次git checkout heroku_appgit merge master,就会出现.gitignore合并冲突,不仅如此,而且git也会删除我的appsettings.json文件。

如果只有我可以设置一个规则,以使它永远不要删除appsettings.jsongit checkout上的git merge,并以一个规则就永远不要更改分支.gitignore上的heroku_app ,我会很高兴!

1 个答案:

答案 0 :(得分:0)

我想出了一种解决问题的方法,只需将生产仓库和工作目录仓库分开,然后在生产仓库中添加两个分支,一个从github拉出,另一个推到heroku,然后添加合并排除规则从拉分公司到生产分公司 这是步骤

===创建两个单独的git repos

第一个是工作目录

第二个是我单独创建的生产目录

在工作目录目录中:

  1. 克隆github仓库
  2. 在所有分支的.gitignore文件中添加“ path / sensitivevefile”,然后提交并推送
  3. 将敏感性vefile放在工作目录中,并确保git未通过git status检测到任何更改

-现在敏感性vefile将被忽略,让我们转到我之前创建的生产仓库

  1. 创建一个名为heroku-prod的heroku分支
  2. 创建一个称为master的主分支
  3. 添加远程github存储库git remote add github remoteGithubUrlHere.git
  4. 添加远程heroku存储库git remote add heroku remoteHerokuUrlHere.git

===在heroku文件夹中添加合并排除

  1. 在全局git config中添加称为我们的合并驱动程序

    git config --global merge.ours.driver true

  2. 在heroku分支中添加排除项

    git checkout heroku-prod 在.gitattributes中添加“ .gitignore merge = ours” 在.gitattributes中添加“ .gitattributes merge = ours”,然后提交更改。

发布步骤

1-从github拉出

git checkout master git pull github master

2-将主分支合并到heroku分支

git checkout heroku-prod git merge master

3-推送至heroku

git checkout heroku-prod git push -u heroku heroku-prod

=======重要说明

.gitignore或.gitattributes中的任何更改在将主分支合并到heroku分支时都将被忽略,因此,如果此文件中有任何更改,则更改必须为:

  • 进行手动编辑。
  • 或暂时删除“ .gitattributes”文件中的合并排除项,并保留敏感文件然后合并,然后在“ .gitattributes”中返回合并排除项