如何将 Gerrit 更改移动到不同的分支?
How do you move a Gerrit Change to a different branch?
在我们的 Gerrit 设置中,我们没有启用 Move Change
插件,但是我们在分支 A 上有很多更改,我们希望以最小的分布移动到分支 B。
到目前为止,我发现的唯一方法是检查本地存储库中分支 A 的更改,然后:
git push origin HEAD:refs/for/B
这会在分支 B 上创建一个新更改,"Cherry Picked" 来自我正在尝试在分支 A 上移动的更改。这意味着我们需要放弃分支 A 上的旧更改,从而创建更多比我想要的一团糟(我们基本上是在复制我们想要移动的每一个变化)。
有什么方法可以通过 git CLI 移动更改吗?我更愿意以类似于上传新变更集而不是创建新变更的方式更新分支。
Move Change
不是插件而是核心功能,从 2.13 版本开始可用。从版本 3.0.0 开始,可以 disable it on the server config。 (请注意,该配置从 3.0.0 开始可用,但仅从 3.0.3 开始记录)。
如果 Gerrit 版本早于 2.13,或 3.0.0 或更高版本且禁用该功能,则无法移动更改的目标分支。您将不得不放弃它并重新上传一个新的到正确的分支。
对于 3.0.0+,您可以要求服务器管理员启用该功能,但如果它被禁用,则意味着它是故意禁用的;它是默认启用的。人们可能想要禁用它的一个原因是它不会自动将移动的更改重新设置为新目标的基线,这可能会导致包含不需要的提交。参见 issue 12216。
在我们的 Gerrit 设置中,我们没有启用 Move Change
插件,但是我们在分支 A 上有很多更改,我们希望以最小的分布移动到分支 B。
到目前为止,我发现的唯一方法是检查本地存储库中分支 A 的更改,然后:
git push origin HEAD:refs/for/B
这会在分支 B 上创建一个新更改,"Cherry Picked" 来自我正在尝试在分支 A 上移动的更改。这意味着我们需要放弃分支 A 上的旧更改,从而创建更多比我想要的一团糟(我们基本上是在复制我们想要移动的每一个变化)。
有什么方法可以通过 git CLI 移动更改吗?我更愿意以类似于上传新变更集而不是创建新变更的方式更新分支。
Move Change
不是插件而是核心功能,从 2.13 版本开始可用。从版本 3.0.0 开始,可以 disable it on the server config。 (请注意,该配置从 3.0.0 开始可用,但仅从 3.0.3 开始记录)。
如果 Gerrit 版本早于 2.13,或 3.0.0 或更高版本且禁用该功能,则无法移动更改的目标分支。您将不得不放弃它并重新上传一个新的到正确的分支。
对于 3.0.0+,您可以要求服务器管理员启用该功能,但如果它被禁用,则意味着它是故意禁用的;它是默认启用的。人们可能想要禁用它的一个原因是它不会自动将移动的更改重新设置为新目标的基线,这可能会导致包含不需要的提交。参见 issue 12216。