Git 将Gerrit中的当前补丁集重定位于另一个分支上

Git 将Gerrit中的当前补丁集重定位于另一个分支上,git,gerrit,Git,Gerrit,在我从事的项目中,有两个分支:主分支和功能分支。 我曾在Feature branch工作,并与Gerrit联系,获得了一些评论(目前我在Feature branch上有10个补丁集)。 现在,我想将功能分支重新设置到主分支上,但同时保留评论和补丁集的历史记录(因此不像樱桃拣选那样只拣选最后一次提交,而不保留历史记录)。 有可能这样做吗?我知道我可以进行合并,但是当我将新提交(合并后)推送到Main时,这会保留在Feauture分支上完成的审查的历史记录吗 谢谢你的阅读 将功能引入主分支的正确方法

在我从事的项目中,有两个分支:主分支和功能分支。 我曾在Feature branch工作,并与Gerrit联系,获得了一些评论(目前我在Feature branch上有10个补丁集)。 现在,我想将功能分支重新设置到主分支上,但同时保留评论和补丁集的历史记录(因此不像樱桃拣选那样只拣选最后一次提交,而不保留历史记录)。 有可能这样做吗?我知道我可以进行合并,但是当我将新提交(合并后)推送到Main时,这会保留在Feauture分支上完成的审查的历史记录吗


谢谢你的阅读

将功能引入主分支的正确方法是进行合并。进行合并非常简单,是的。。。您将在Feature分支上保留所有审阅历史记录

请执行以下操作:

  • 完成特征分支的审核工作,审批并提交 改变
  • 签出本地存储库中的主分支
  • 获取(git Fetch)并合并要素分支(git merge 原点/特征)
  • 如果需要,解决冲突(git mergetool)
  • 推送到主分支进行审查(git推送来源) 标题:refs/for/Main)
  • 审查、批准并提交变更

  • 您可以将更改从要素分支移动到主分支。这不会更改父对象,但在移动它之后,您可以在主对象的顶端重新设置更改的基础

    这几乎像是一个樱桃采摘,但你保留了历史

    功能分支是本地分支还是Gerrit上的分支?是否推送到refs/for/master或refs/for/Feature要素分支是跟踪同名远程分支的本地分支。我已经推到了refs/for/Feature(我有几个补丁集,但还没有合并),现在我想将我在refs/for/Feature上所做的所有提交(补丁集)重新设置为Main。我推到了Feature分支的review。我有10个补丁集,但还没有合并。我想将所有带有评论历史记录的补丁集从评论移到主评论,并在那里继续评论。如果你真的愿意,你可以移动你的更改(看看这个问题中的另一个答案),但“移动更改”功能将用于你推到错误分支的情况(是你的情况吗?)。如果你真的在一个功能分支中工作,正确的做法是先查看并提交结果,然后将结果合并到主分支。不确定“移动更改”gerrit选项。我认为如果我有冲突(而且我有很多冲突),这将不起作用。我认为解决方案是在Main之上重新设置特性的基础(解决冲突),然后推送。对吗?如:git签出功能git rebase Main git签出功能git merge Main这对我想要做的事情有用吗?我在答案中添加了更多细节。