我是Git的新手,我最近刚学会了git分支的基础知识。我现在遇到的一个麻烦是如何设置git分支以便在我的web项目中使用。
我使用main分支进行生产,另一个名为beta
进行实时更改和功能测试。此分支位于网络服务器的子文件夹中,可通过beta.
子域访问。
我遇到的主要问题是,作为一个Web项目,一些URL,API密钥等在代码上定义为常量。为了使项目正常工作,我必须更改代码上的API密钥和URL,当合并分支时,这些更改显然会被推送到主项目。
我不知道如何发布这个,不必每次与master
合并时都在beta
上手动编辑这些文件,并在下次合并时处理冲突。
你有任何关于如何面对这个问题的提示吗?任何回复将不胜感激^^
答案 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'