gpt4 book ai didi

Git 流程 - 摆脱一个特定的功能

转载 作者:太空狗 更新时间:2023-10-29 13:20:52 24 4
gpt4 key购买 nike

我目前正尝试在我的团队中建立一个开发流程并阅读有关 GitFlow 的信息。它看起来很有趣,但我可以发现一些问题。

让我们假设以下场景:

我们完成了 F1F2F3 功能,并将它们 merge 到 develop 分支中。在此基础上,我们创建了一个 release 分支。

如果我们想摆脱 F3 功能该怎么办?

看看这张图片以获得更好的想法。

enter image description here

最佳答案

这确实是git-flow的弱点。在我看来,有多种方法可以解决这个问题,但没有一种是完美的。


功能恢复

一种方法是简单地 revert F3 的 merge 提交。

git checkout <release-branch>
git revert --mainline 1 <hash-of-f3-merge-commit>

--mainline 1(简称 -m 1)告诉 git 恢复 merge 提交相对于它的 first 父级的更改,这是 merge 更改的分支。在我们的例子中,这将是 develop

另一方面,当您将 release 分支 merge 回 develop 时,这会导致问题,因为这也会 merge 还原。您可能必须重新 merge 该功能 (F3) 到 develop 中。

替代发布基础

此方法将您的发布分支基于 master 的最新状态而不是 develop

git checkout -b master <release-branch>

从这里您可以 cherry-pick您要包含在版本中的每个功能。再次使用 --mainline 选项。

git cherry-pick --mainline 1 <hash-of-f1-merge-commit>
git cherry-pick --mainline 1 <hash-of-f2-merge-commit>

或者您可以 merge该功能分支到发布分支而不是 cherry-picking 它们,这将导致相同的结果,但历史记录更加困惑(这可以使用 --squash 选项后跟一个 git commit,但是你实际上已经完成了一个 cherry-pick)。

git merge F1
git merge F2

如果每个版本只包含开发功能的一小部分,替代版本基础方法还不错,但如果您想发布大量功能,则很难使用。


我个人更喜欢后一种方法,因为它会产生更清晰的历史记录,而不会发生还原 和重复的 merge 提交。

关于Git 流程 - 摆脱一个特定的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28988952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com