如何为4个不同的环境创建git分支

5

目前,我们有四个不同的IT环境:dev用于开发者,test用于测试人员测试代码。UAT是一个类似于生产环境的环境,供某些最终用户在进入生产之前使用产品。Production为生产环境。

因此,我在网上阅读了一些关于Git源代码控制的文章,但看起来Git只有开发分支(供开发人员使用)和主分支(用于生产环境),特性分支用于添加功能,发布分支供测试人员测试。

因此,我想知道是否需要单独拥有UAT和测试分支?这样最终用户和测试人员就可以分别测试代码。如果需要,如何在Git中设置这两个分支?

3个回答

6

Git分支完全独立于多个代码环境的概念,不必一一映射。 Git本身应该限制在developfeaturebugfixhotfixreleasemaster上。这在Git Flow中有所说明:

Git Flow

通常情况下,develop 分配到开发环境,release 分配到测试环境,master 分配到生产环境。但是,请注意这不是必需的部署策略。如果您有其他环境,例如 UAT,您最终只需要测试最终用户将看到的内容。最新 release 中的代码应该与 master 相同,所以无论您将这两个哪个部署到 UAT 环境都没关系;这取决于个人喜好。个人而言,我会选择 release,因为 master 通常被认为是“最后一个已知良好点”。您的最终用户可能会发现一些您自己的测试人员没有发现的错误!

话虽如此,值得注意的是,在 DevOps 圈子里有一个当前的推动"向左转"(shift left),其中整个测试周期发生在 feature 分支本身上,develop 被认为是“可交付代码”。 在这种情况下,develop 可以直接通过到生产环境,因此(理论上),所有环境都将指向 develop。 然而,我仍然建议个人遵循 Git Flow。


2
Git Flow 是一种 Git 工作流程。根据您的环境,您可能会使用不同的 Git 分支策略。 - Jaap

3
Git不在乎你创建了多少分支或者你用它们做了什么。Master只是默认的分支名称,没有任何特殊之处。
要在Git中设置任意数量的分支,请按照以下步骤操作:
// get everything of a working version into git
git add some_file.txt
git commit -m "initial commit"

git branch release
git branch testing
git branch UAT
git branch whatever_name_you_want

之后所有的分支都将处于同一版本。此时您所做的更改只会影响一个分支。若想将更改应用到其他分支,请切换并合并。(请记得切换回第一个分支,如果您不打算在发布/测试分支上进行额外更改)。

git checkout release
// I usually use master as the main dev branch but the name doesn't matter
git merge master


// remember to checkout back if you want to keep writing changes to your dev branch
git checkout master

同样的步骤适用于任何基于GUI的Git软件。

1
你可以根据你的分支策略拥有不同的分支:
你可以有一个UAT分支(包含正在进行UAT测试的代码)、develop分支(包含当前单元测试的代码)和master分支(包含生产环境的代码)。你还可以有一个hotfix分支(用于在生产环境上修复问题,从master分支派生)。这完全取决于你的分支策略。正如@Obsidian Age所提到的,git flow工作流是标准的分支策略。
如果你想同时在多个分支上工作:
你可以使用不同的本地文件夹为每个分支工作,使用 git worktree feature来处理同一远程仓库的多个分支。以前,你只能有一个指向单个分支的本地引用到远程仓库。现在,通过git worktree,你可以根据需要在多个分支上工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接