Git 针对修补程序和补丁等内容针对发布分支进行变基
Git rebase against a release branch for things like hotfixes and patches
在工作中,我们使用 develop
分支进行日常工作 - 新功能、错误修复等。当我们准备发布时,我们将 devleop 分支合并到 master、tag 和 release。
如果我们需要做一个需要立即发布的修补程序,我们会在 master
之外创建一个分支,应用更改,并相应地合并(包括将 master
合并回 develop
).到目前为止,我所描述的内容没有任何问题。
我最近刚刚在处理一个将包含在下一个版本中的小错误修复。所以创建了我常用的 develop
分支,做了一些提交,并提交了一个 PR。然后一位经理希望在今天将修复程序作为修补程序。好的 - 很简单,我将根据 master
重新调整我的工作并打开针对 master 的 PR。但是,运行 git rebase master
没有根据当前 HEAD 提交重放我的工作。相反,git 告诉我一切都是 "up to date"。然后我打开了针对 master 的 PR,我的 PR 包含 所有来自 develop
分支的新工作,而不仅仅是我的错误修复。
我能够进行交互式变基并删除所有不应该存在的提交,但这似乎有点乏味且容易出错。有没有更明智的方法来实现 对较旧但最新的分支进行变基 的目标?
而不是变基 "against master
"(即 "with master
as the upstream" 根据您使用的命令),您需要变基您的工作 --onto master
并将上游设置为 develop
。
git rebase --onto master develop my_fix
请记住,这会创建一个新的未经测试的代码状态;由于热修复可以快速跟踪到生产环境,因此需要特别注意测试。
在工作中,我们使用 develop
分支进行日常工作 - 新功能、错误修复等。当我们准备发布时,我们将 devleop 分支合并到 master、tag 和 release。
如果我们需要做一个需要立即发布的修补程序,我们会在 master
之外创建一个分支,应用更改,并相应地合并(包括将 master
合并回 develop
).到目前为止,我所描述的内容没有任何问题。
我最近刚刚在处理一个将包含在下一个版本中的小错误修复。所以创建了我常用的 develop
分支,做了一些提交,并提交了一个 PR。然后一位经理希望在今天将修复程序作为修补程序。好的 - 很简单,我将根据 master
重新调整我的工作并打开针对 master 的 PR。但是,运行 git rebase master
没有根据当前 HEAD 提交重放我的工作。相反,git 告诉我一切都是 "up to date"。然后我打开了针对 master 的 PR,我的 PR 包含 所有来自 develop
分支的新工作,而不仅仅是我的错误修复。
我能够进行交互式变基并删除所有不应该存在的提交,但这似乎有点乏味且容易出错。有没有更明智的方法来实现 对较旧但最新的分支进行变基 的目标?
而不是变基 "against master
"(即 "with master
as the upstream" 根据您使用的命令),您需要变基您的工作 --onto master
并将上游设置为 develop
。
git rebase --onto master develop my_fix
请记住,这会创建一个新的未经测试的代码状态;由于热修复可以快速跟踪到生产环境,因此需要特别注意测试。