在gerrit中,我通常会将多个小提交放在一起。一旦他们被审查和&准备提交,我看到所有更改的按钮Submit including parents
,而第一个更改有一个Submit
按钮。
在审核这些更改的同时,目标分支的HEAD多次移动到我的更改的父提交之前。如果我要对分支的当前HEAD进行整套更改,则需要我在本地系统上手动执行并再次推送到gerrit。我想知道我们是否有像Rebase including parents
这样的选项,我可以在不需要在本地系统上做任何事情的情况下重新整理链条(只有在没有冲突的情况下)?
答案 0 :(得分:2)
我想知道我们是否有像Rebase这样的选项,包括父母,我可以在不需要在本地系统上做任何事情的情况下重新整理链条(只有在没有冲突的情况下)?
不,Gerrit没有这样的功能。在Gerrit的用户界面中执行此操作的唯一方法是从下到上单独修改系列中的每个更改。
我创建了一个request on the Gerrit issue tracker来添加“包含父母的rebase”功能。
答案 1 :(得分:0)
Gerrit 2.4 version为mentioned here。
rebase只涉及一个分支,可能是父分支中的祖先提交。
如果您拥有在该rebase之后更改的本地父分支,最简单的方法是获取Gerrit repo并将yuor本地分支重置为新的远程分支HEAD
git branch -f myBranch origin/myBranch
git branch -f myParentBranch origin/myParentBranch
这样,rebase在Gerrit端完成,重置在本地完成。
答案 2 :(得分:0)
如果您希望目标分支的历史记录尽可能线性,请转到Project-> General页面并将Submit Type
更改为Rebase If Necessary
。当您按Submit
或Submit including parents
时,这些提交将自动重新定位到目标分支的当前头部,而不是递归合并。请注意,如果需要记录提交sha1,则会为每个更改创建新的修补程序集。如有必要,请不要忘记同步当地分行。
git fetch origin <target-branch>
git reset FETCH_HEAD --hard