繁体   English   中英

如何在 dev 和主分支和子分支 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 环境时:

  1. .ebextensions-dev.elasticbeanstalk-dev文件夹名称的末尾删除-dev
files='.elasticbeanstalk .ebextensions'
x='-dev'
for i in $files; do
    mv $i$x $i
done;
  1. 运行eb deploy
  2. -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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM