如何在web应用的不同开发阶段使用git分支?

如何在web应用的不同开发阶段使用git分支?,git,github,Git,Github,我对Git基本上是新手,最近刚刚学习了Git分支的基础知识。我现在的一个麻烦是如何设置git分支以用于我的web项目 我使用主分支进行生产,另一个分支称为beta进行实时更改和功能测试。此分支位于Web服务器的子文件夹中,可通过beta.子域访问 我的主要问题是,作为一个web项目,一些URL、API键等在代码中被定义为常量。为了使项目正常工作,我必须更改代码中的API键和URL,当我合并分支时,这些更改显然会被推送到主项目中 我不知道如何发布此消息,而无需在每次与beta合并时在master上

我对Git基本上是新手,最近刚刚学习了Git分支的基础知识。我现在的一个麻烦是如何设置git分支以用于我的web项目

我使用主分支进行生产,另一个分支称为
beta
进行实时更改和功能测试。此分支位于Web服务器的子文件夹中,可通过
beta.
子域访问

我的主要问题是,作为一个web项目,一些URL、API键等在代码中被定义为常量。为了使项目正常工作,我必须更改代码中的API键和URL,当我合并分支时,这些更改显然会被推送到主项目中

我不知道如何发布此消息,而无需在每次与
beta
合并时在
master
上手动编辑这些文件,并在下次合并时处理冲突

关于如何面对这一点,你有什么建议吗?任何回复都将不胜感激^ ^

请查看以下两个链接:

对于不同的配置。您可以创建这样的文件夹结构:

-configs
  -dev
    conf.ini
  -beta
    conf.ini
  -live
    conf.ini
-src
    conf.ini

根据env将所有配置文件放入此文件夹并提交。从索引中删除所有文件(
src/conf.ini
)并将它们放在
gitignore
下,然后可以在配置文件夹中进行更改并将这些文件复制到原始文件。它们将不会被修改,因为它们位于gitignore下。这样做的核心思想是确保对您希望从BETA版传播到生产版的更改和您不希望传播的更改使用单独的提交。通常,您应该合并任何要传播的提交,但您可以“假合并”不需要的提交

在使用这样的合并工作流之前,您应该熟悉合并。您需要意识到,每次将BETA版合并到生产中时,您都会将BETA版中的任何和所有提交(尚未合并)合并到生产中。一旦合并了提交(或者更严格地说,一旦可以从生产中访问提交),以后就不会再合并。有一种方法可以“假合并”提交,这样它看起来已经被合并,而没有真正应用更改,因此在将来的更改中将被忽略

对于像您这样的工作流,您可以执行以下操作:

$ # Create BETA branch
$ git checkout -b BETA PRODUCTION

$ <make BETA-only changes>
$ git commit -m "BETA-only changes"                       # => commit #3612072

$ # "Fake merge" all changes from BETA that have not already been merged into PRODUCTION,
$ # i.e. "mark" those changes as having been merged without really merging them
$ git checkout PRODUCTION
$ git merge -strategy=ours -m "Fake merge BETA => PRODUCTION" BETA
$                                                         # => commit #8eae339
$ # Okay - now future merges will ignore that commit

$ # Make changes in BETA branch
$ git checkout BETA
$ <make changes>
$ git commit -m "Real change in BETA"                     # => commit #3cd69ad

$ # Real merge all changes from BETA that have not already been merged (or fake merged) into PRODUCTION
$ # i.e. this should ignore the changes you "fake-merged" before
$ git checkout PRODUCTION
$ git merge -m "Real merge BETA => PRODUCTION" BETA       # => commit #bc26f91
$ # Okay - PRODUCTION should have just the most recent changes and not the BETA-only changes
===

编辑:当更改分支中的版本号时,会出现类似的问题,例如,在维护分支中升级版本#以发布版本,然后将该错误修复拖到主线开发分支中:


感谢您提供的链接,它们非常有用。但是,这并不能解决我关于如何为每个分支处理不同配置文件的问题:\n好吧,它可能会工作,但是我认为这实际上不能很好地扩展到更多分支,而且它非常混乱。。。无论如何谢谢^^我想这会很好地完成这项工作。谢谢我会投票,但我是新手,而且我没有足够的声誉^^U@Roberto桑塔拉很乐意帮忙。我也可以帮一点忙…:-)
*   bc26f91 Oct 31 Real merge of changes from BETA into PRODUCTION
|\
| * 3cd69ad Oct 31 Real change in BETA
* |   8eae339 Oct 31 Fake merge BETA => PRODUCTION
|\ \
| |/
| * 3612072 Oct 31 BETA-only changes
| |