我正在尝试理解GitLab在flow.html上的建议流。但是,我不太确定这个说法:
如果您需要使用修补程序来选择提交,通常在特性分支上开发它并将其与合并请求合并到主服务器中,不要删除特性分支。如果师父是好的走(应该是,如果你练习连续交付),你就合并到其他分支。
这是否意味着大师会有一个以上的提交?例如,第一个提交(实际上是合并请求)测试修复是否有效,第二个提交是在第一个提交失败时进行的。
另一件事是,(考虑到我们有一个生产分支),如果我们将修补程序合并到master中,我认为我们必须在主服务器上部署其他功能,不是吗?否则,我们做樱桃采摘的热修复提交在主到生产分支。
实际上,建议的流并不像http://nvie.com/posts/a-successful-git-branching-model/中的另一个流那样详细。所以这有点让人困惑。
发布于 2020-06-02 14:30:54
我在https://github.com/oldsj/test-hotfix/commits/master提供的测试修复程序中进行了热修复过程的实验。
基本上,只要从prod分支创建修复分支,这个过程看起来就相当简单,即使主程序领先于imp/prod。
注: imp是我们所称的“预制作”。
硕士(开发部门)
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显示错误
cat hello.txt
Hello wolrd
git log
commit 66b1a08080f0db548da85471b4673c5a9f6d703f (HEAD -> prod, master, imp)
让我们在prod之前添加一些提交给主
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分支上创建一个新分支来修复:
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并测试。
git checkout master
git merge hotfix
git log
commit 2672d5059a55472132f02178c7f51d8b1af0f8ea (HEAD -> master)
> cat hello.txt
Hello world
在德夫看来不错!让我们合并到imp和prod
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)
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中。
cat hello.txt
Hello world
cat newstuff.txt
new stuff
发布于 2016-07-15 12:40:58
这个工作流的关键是从正确的点创建一个The修复分支。假设这是您当前的历史记录:
master o-------o-----o
\-----o
br1
现在您必须修复master
分支。为此,创建一个从master
开始的特性分支,如果需要,它将合并到master
和br1
中:
master o-------o-----o--o
\-----o--+
| bf1 |
\-----o--o
br1
使用此工作流,您可以跟踪错误修复,并可以将其应用于任何需要的分支。
要避免的错误是从分支br1
开始创建be修复分支,因为如果将其合并为主服务器,那么分支br1
也将被合并:
master o-------o-----o-------o
\-----o /
br1 \-----/
bf1
发布于 2017-01-06 17:40:40
从flow.html的医生那里
如果您需要使用修补程序来选择提交,通常在特性分支上开发它并将其与合并请求合并到主服务器中,不要删除特性分支。如果师父是好的走(应该是,如果你正在练习连续交付),你就合并到其他分支。如果这是不可能的,因为需要更多的手动测试,您可以将合并请求从特性分支发送到下游分支。
我想重点是,你总是把“下坡”合并起来。这意味着它从主->阶段的->生产,但从来不是一个修补程序到生产,然后掌握。如果您想要“挑选”一个修补程序,您可以将其作为一个功能分支。然后,将该功能分支合并为master,而不关闭它。如果需要的话,它是经过测试的,然后这个特性分支很好地被合并到了生产线上,然后进行了准备,然后进行了生产。
https://stackoverflow.com/questions/38395497
复制相似问题