![](/img/trans.png)
[英]Maintain seperate git branches - One for heroku and another for github
[英]How to maintain seperate files in dev and main branches and sub branches github
问题:当将dev
合并到main
时,我如何让它们.ebextensions
和.elasticbeanstalk
在各自的分支上提交,但在合并期间从不相互覆盖?
要求:我希望从dev
中签出新的主题分支并将它们合并回dev
,因此这些主题分支将需要相同的.ebextensions
和.elasticbeanstalk
文件夹来附带它们。
Landscape:与 Github 合作开发 Elastic beanstalk 的 Flask 项目。
我有两个主要branches
我已经为一个 Elastic beanstalk 环境进行了dev
设置,并在另一个环境中进行了main
设置。 这意味着我有两个不同版本的.ebextensions
和.elasticbeanstalk
文件夹。
.
├── application.py
├── .ebextensions
├── .ebignore
├── .elasticbeanstalk
├── .gitignore
├── main.py
└── .vscode
我一直在弄乱文件,不得不将它们写回本地并再次推送到远程以修复它们。
阅读了大约三分之一的git-scm.com's
书,所以我认为解决方案将涉及"onbranch:" includeIf
,但这个 例子很难理解。
当然我错过了一些东西,这不是一个不常见的要求。
您似乎已经找到了一种可能的解决方法,但我想提出一个替代解决方案,您可以将 Git 设置为从不覆盖特定文件。
这可以通过创建一个与您的文件匹配的模式的 .gitattributes 文件,然后创建一个虚拟合并策略来完成。
可以在此处找到有关此方法的更深入讨论,并在此处提供更多信息。
我相信在你的情况下你可以做一些事情
git config --global merge.ours.driver true
echo ".ebextensions/* merge=ours" >> .gitattributes
echo ".elasticbeanstalk/* merge=ours" >> .gitattributes
请注意,我不确定是否可以使用通配符传递孔目录,但我认为应该是可能的。
当您在 Git 中执行操作时,几乎所有操作都只向 Git 数据库添加数据,这是我读过的一行,但在尝试解决此问题时并未应用。
感谢@torek 的澄清。
我的总结解决方案是存储所有文件
所以现在我的文件结构看起来像
.
├── application.py
├── .ebextensions-dev
├── .ebextensions-main
├── .ebignore
├── .elasticbeanstalk-dev
├── .elasticbeanstalk-main
├── .gitignore
├── main.py
└── .vscode
当我想将应用程序部署到dev
Elastic beanstalk 环境时:
.ebextensions-dev
和.elasticbeanstalk-dev
文件夹名称的末尾删除-dev
。files='.elasticbeanstalk .ebextensions'
x='-dev'
for i in $files; do
mv $i$x $i
done;
eb deploy
-dev
添加回.ebextensions
和.elasticbeanstalk
文件夹名称的末尾。files='.elasticbeanstalk .ebextensions'
x='-dev'
for i in $files; do
mv $i $i$x
done;
main
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.