Git:如何提交和挑选错误修复?

Git: how to commit and cherry-pick bug fix?

我们的开发团队使用 dev 分支进行大部分提交,并每月分支一次以发布分支。我想知道处理错误修复提交的最流行模型是什么。提交到 monthly 分支的 HEAD(最近的分支,比如 2015.Jun 分支)并选择(或只是变基)到 dev 分支?或者提交到 dev 分支的 HEAD,然后将其挑选到 monthly 分支。哪种方式更好?

根据这个 site,它表示 "bugfixes from rel.branch may be continuously merged back into dev branch"。这是一个好模型吗?有什么问题吗?

Git-Flow(您的 link)或类似的工作流程非常常用。应用错误修复后,定期将发布分支合并回开发分支是恕我直言的好方法。

关于你问题中的其他几点

Commit to HEAD of monthly branch (most recent one, say 2015.Jun branch) and cherry-pick (or just rebase) to dev branch?

您可以挑选它们进行开发,但它不会给出明确的 "merge",在历史记录中可见。至于将发布分支变基到开发,你当然不想那样做,因为开发将有最近的提交不稳定并且与正在进行的发布无关。如果你的意思是 rebase develop 到 release - 虽然技术上没问题,但我会强烈避免这种情况,以免重写任何开发历史,特别是如果有多个贡献者。

Or commit to HEAD of dev branch, then cherry-pick it to monthly branch. Which way is better?

我也不推荐这样做。如果你正在修复一个进入发布的错误,很自然地在发布分支中修复它 "in-place",然后将发布合并到开发中以进行修复(或者如果你不想的话,可以选择合并)。以另一种方式进行(修复开发和发布时挑选)并不能保证它与发布兼容。

总结一下我的观点,我会说最好尽可能明确。如果您在发布范围内修复错误,请将其应用到该分支,然后将其合并到开发中,这可能会或可能不会产生稳定的代码库。