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

Heroku, Github and Asp.net core, How to manage appsettings.json?

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

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

然而这并没有按预期工作,因为每次我实现一个功能来掌握,然后 git checkout heroku_app,然后 git merge master,出现 .gitignore 合并冲突,不仅如此,而且git 删除了我的 appsettings.json 文件。

要是我能设置一条规则,永远不要删除 git checkoutgit merge 上的 appsettings.json,并且永远不要更改分支 [=16] 上的 .gitignore =],我会很高兴!

我找到了解决问题的方法,简单地说,我将生产回购和工作目录回购分开,然后在生产回购中添加了两个分支,一个从 github 拉出,另一个推入heroku,然后将合并排除规则从 pull 分支添加到 production 分支 这是步骤

=== 创建两个单独的 git 存储库

首先是工作目录

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

在workdirectory目录中:

  1. 克隆 github 存储库
  2. 将“path/sensitvefile”添加到 .git忽略所有分支中的文件,提交并推送
  3. 将敏感文件放在工作目录中,并确保git没有检测到`git状态
  4. 的任何变化

-现在敏感文件将被忽略,让我们转到我之前创建的生产回购

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

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

  1. 在全局 git 配置中添加一个名为我们的合并驱动程序

    git config --global merge.ours.driver true

  2. 在 heroku-branch 中添加排除项

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

发布步骤

1- 从 github

拉取

git checkout master git pull github master

2- 将 master-branch 合并到 heroku-branch

git checkout heroku-prod git merge master

3- 推送到 heroku

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

======= 重要提示

.gitignore 或 .gitattributes 中的任何更改在将 master-branch 合并到 heroku-branch 时将被忽略,因此如果此文件中有任何更改,更改必须:

  • 手动编辑。
  • 或者暂时删除'.gitattributes'文件中的合并排除并保留敏感文件然后合并,然后return合并排除'.gitattributes'