首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GitLab上的修复程序

GitLab上的修复程序
EN

Stack Overflow用户
提问于 2016-07-15 11:54:05
回答 4查看 9.7K关注 0票数 12

我正在尝试理解GitLab在flow.html上的建议流。但是,我不太确定这个说法:

如果您需要使用修补程序来选择提交,通常在特性分支上开发它并将其与合并请求合并到主服务器中,不要删除特性分支。如果师父是好的走(应该是,如果你练习连续交付),你就合并到其他分支。

这是否意味着大师会有一个以上的提交?例如,第一个提交(实际上是合并请求)测试修复是否有效,第二个提交是在第一个提交失败时进行的。

另一件事是,(考虑到我们有一个生产分支),如果我们将修补程序合并到master中,我认为我们必须在主服务器上部署其他功能,不是吗?否则,我们做樱桃采摘的热修复提交在主到生产分支。

实际上,建议的流并不像http://nvie.com/posts/a-successful-git-branching-model/中的另一个流那样详细。所以这有点让人困惑。

EN

回答 4

Stack Overflow用户

发布于 2020-06-02 14:30:54

我在https://github.com/oldsj/test-hotfix/commits/master提供的测试修复程序中进行了热修复过程的实验。

基本上,只要从prod分支创建修复分支,这个过程看起来就相当简单,即使主程序领先于imp/prod。

注: imp是我们所称的“预制作”。

硕士(开发部门)

代码语言:javascript
运行
复制
git init
echo "Hello wolrd" > hello.txt
git add -A .
git commit -m "add hello.txt"
git log
commit 66b1a08080f0db548da85471b4673c5a9f6d703f (HEAD -> master)

cat hello.txt
Hello wolrd

git checkout -b imp
git checkout -b prod

Prod显示错误

代码语言:javascript
运行
复制
cat hello.txt
Hello wolrd

git log
commit 66b1a08080f0db548da85471b4673c5a9f6d703f (HEAD -> prod, master, imp)

让我们在prod之前添加一些提交给主

代码语言:javascript
运行
复制
git checkout master
git log
commit 66b1a08080f0db548da85471b4673c5a9f6d703f (HEAD -> master, prod, imp)

echo "new stuff" >> newstuff.txt
git add -A .
git commit -m "add newstuff.txt"
git log
commit df1ca012262c26ab3a29d81b5cb6d46f6c1fc3cc (HEAD -> master)
commit 66b1a08080f0db548da85471b4673c5a9f6d703f (prod, imp)

一个用户报告了prod中的错误,让我们通过在prod分支上创建一个新分支来修复:

代码语言:javascript
运行
复制
git checkout prod
git log
commit 66b1a08080f0db548da85471b4673c5a9f6d703f (HEAD -> prod, imp)

git checkout -b hotfix
Switched to a new branch 'hotfix'
git log
commit 66b1a08080f0db548da85471b4673c5a9f6d703f (HEAD -> hotfix, prod, imp)

echo "Hello world" > hello.txt
git add -A .
git commit -m "fix typo"
git log
commit 1243123edc75e0abf349e1bb154d39c9f25dab2d (HEAD -> hotfix)

cat hello.txt
Hello world

酷,我们的打印错误是固定在hotfix分支中的,让我们在dev中合并到master并测试。

代码语言:javascript
运行
复制
git checkout master
git merge hotfix
git log
commit 2672d5059a55472132f02178c7f51d8b1af0f8ea (HEAD -> master)

> cat hello.txt
Hello world

在德夫看来不错!让我们合并到imp和prod

代码语言:javascript
运行
复制
git checkout imp
git merge hotfix
git log
commit 1243123edc75e0abf349e1bb154d39c9f25dab2d (HEAD -> imp, hotfix)
cat hello.txt
Hello world

git checkout prod
git merge hotfix
git log
commit 1243123edc75e0abf349e1bb154d39c9f25dab2d (HEAD -> imp, hotfix)
cat hello.txt
Hello world

git branch -D hotfix

错误在较低环境中测试后的prod中修正了,通过将"PR“合并到这些环境分支,现在让我们来促进开发更改(提交df1ca012262c26ab3a29d81b5cb6d46f6c1fc3cc)

代码语言:javascript
运行
复制
git checkout master
git log
commit 2672d5059a55472132f02178c7f51d8b1af0f8ea (HEAD -> master, imp)
commit 1243123edc75e0abf349e1bb154d39c9f25dab2d (prod)
commit df1ca012262c26ab3a29d81b5cb6d46f6c1fc3cc
commit 66b1a08080f0db548da85471b4673c5a9f6d703f

git checkout imp
git merge master
git log
commit 2672d5059a55472132f02178c7f51d8b1af0f8ea (HEAD -> imp, master)
commit 1243123edc75e0abf349e1bb154d39c9f25dab2d (prod)
commit df1ca012262c26ab3a29d81b5cb6d46f6c1fc3cc
commit 66b1a08080f0db548da85471b4673c5a9f6d703f

cat newstuff.txt
new stuff
cat hello.txt
Hello world

git checkout prod
git merge imp
git log
commit 2672d5059a55472132f02178c7f51d8b1af0f8ea (HEAD -> prod, master, imp)
commit 1243123edc75e0abf349e1bb154d39c9f25dab2d
commit df1ca012262c26ab3a29d81b5cb6d46f6c1fc3cc
commit 66b1a08080f0db548da85471b4673c5a9f6d703f

开发更改现在与修补程序一起出现在imp和prod中。

代码语言:javascript
运行
复制
cat hello.txt
Hello world
cat newstuff.txt
new stuff
票数 8
EN

Stack Overflow用户

发布于 2016-07-15 12:40:58

这个工作流的关键是从正确的点创建一个The修复分支。假设这是您当前的历史记录:

代码语言:javascript
运行
复制
master o-------o-----o
               \-----o
                 br1

现在您必须修复master分支。为此,创建一个从master开始的特性分支,如果需要,它将合并到masterbr1中:

代码语言:javascript
运行
复制
master o-------o-----o--o
               \-----o--+
               | bf1    |
               \-----o--o
                 br1

使用此工作流,您可以跟踪错误修复,并可以将其应用于任何需要的分支。

要避免的错误是从分支br1开始创建be修复分支,因为如果将其合并为主服务器,那么分支br1也将被合并:

代码语言:javascript
运行
复制
master o-------o-----o-------o
               \-----o      /
                 br1 \-----/
                       bf1
票数 7
EN

Stack Overflow用户

发布于 2017-01-06 17:40:40

flow.html的医生那里

如果您需要使用修补程序来选择提交,通常在特性分支上开发它并将其与合并请求合并到主服务器中,不要删除特性分支。如果师父是好的走(应该是,如果你正在练习连续交付),你就合并到其他分支。如果这是不可能的,因为需要更多的手动测试,您可以将合并请求从特性分支发送到下游分支。

我想重点是,你总是把“下坡”合并起来。这意味着它从主->阶段的->生产,但从来不是一个修补程序到生产,然后掌握。如果您想要“挑选”一个修补程序,您可以将其作为一个功能分支。然后,将该功能分支合并为master,而不关闭它。如果需要的话,它是经过测试的,然后这个特性分支很好地被合并到了生产线上,然后进行了准备,然后进行了生产。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38395497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档