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 checkout
或 git merge
上的 appsettings.json
,并且永远不要更改分支 [=16] 上的 .gitignore
=],我会很高兴!
我找到了解决问题的方法,简单地说,我将生产回购和工作目录回购分开,然后在生产回购中添加了两个分支,一个从 github 拉出,另一个推入heroku,然后将合并排除规则从 pull 分支添加到 production 分支
这是步骤
=== 创建两个单独的 git 存储库
首先是工作目录
第二个是我单独创建的生产目录
在workdirectory目录中:
- 克隆 github 存储库
- 将“path/sensitvefile”添加到 .git忽略所有分支中的文件,提交并推送
- 将敏感文件放在工作目录中,并确保git没有检测到`git状态
的任何变化
-现在敏感文件将被忽略,让我们转到我之前创建的生产回购
- 创建一个名为 heroku-prod 的 heroku-branch
- 创建一个名为 master 的主分支
- 添加远程 github 仓库
git remote add github remoteGithubUrlHere.git
- 添加远程 heroku 存储库
git remote add heroku remoteHerokuUrlHere.git
=== 在 heroku 文件夹中添加合并排除
在全局 git 配置中添加一个名为我们的合并驱动程序
git config --global merge.ours.driver true
在 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'
如何将 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 checkout
或 git merge
上的 appsettings.json
,并且永远不要更改分支 [=16] 上的 .gitignore
=],我会很高兴!
我找到了解决问题的方法,简单地说,我将生产回购和工作目录回购分开,然后在生产回购中添加了两个分支,一个从 github 拉出,另一个推入heroku,然后将合并排除规则从 pull 分支添加到 production 分支 这是步骤
=== 创建两个单独的 git 存储库
首先是工作目录
第二个是我单独创建的生产目录
在workdirectory目录中:
- 克隆 github 存储库
- 将“path/sensitvefile”添加到 .git忽略所有分支中的文件,提交并推送
- 将敏感文件放在工作目录中,并确保git没有检测到`git状态 的任何变化
-现在敏感文件将被忽略,让我们转到我之前创建的生产回购
- 创建一个名为 heroku-prod 的 heroku-branch
- 创建一个名为 master 的主分支
- 添加远程 github 仓库
git remote add github remoteGithubUrlHere.git
- 添加远程 heroku 存储库
git remote add heroku remoteHerokuUrlHere.git
=== 在 heroku 文件夹中添加合并排除
在全局 git 配置中添加一个名为我们的合并驱动程序
git config --global merge.ours.driver true
在 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'