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

时间:2013-11-19 11:02:51

标签: git github

我是Git的新手,我最近刚学会了git分支的基础知识。我现在遇到的一个麻烦是如何设置git分支以便在我的web项目中使用。

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

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

我不知道如何发布这个,不必每次与master合并时都在beta上手动编辑这些文件,并在下次合并时处理冲突。

你有任何关于如何面对这个问题的提示吗?任何回复将不胜感激^^

2 个答案:

答案 0 :(得分:1)

检查这两个链接:

针对不同的配置。您可以创建此类文件夹结构:

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

根据env将所有配置文件放入此文件夹并提交它们。从索引中删除所有文件(src/conf.ini)并将其放在gitignore之后,然后在配置文件夹中进行更改并将这些文件复制到原始文件。它们不会被修改,因为它们位于gitignore

之下

答案 1 :(得分:1)

这样的核心思想是确保您对要从BETA传播到PRODUCTION的更改使用单独的提交与您不希望传播的更改。您应该正常合并任何要传播的提交,但是“假装合并”您不提交的提交。

在使用像这样的合并工作流程之前,您应该熟悉合并。您需要意识到,每次将BETA合并到PRODUCTION中时,您都会将BETA中的任何和所有提交(尚未合并)合并到PRODUCTION中。一旦合并提交(或者从技术上讲,一旦提交可以从PRODUCTION获得),它将来不会再合并。有一种方法可以“伪合并”提交,因此它似乎已经合并而没有真正应用更改,因此在将来的更改中将被忽略。

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

$ # 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

冲洗并重复。理想情况下,您不会再进行任何BETA更改,它将“正常工作”。如果您确实需要进行未来的BETA更改,请确保这些更改在他们自己的提交中提交,然后“假合并”这些更改

您的存储库应该看起来像:

*   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
| |

===

编辑:更改分支中的版本号时会出现类似的问题,例如推进维护分支中的版本#的版本,然后将该错误修正引入主线开发分支:

Git merge strategy for integrating 'patch' branch into 'minor', 'minor' branch into 'major'