赞
踩
1、基于同一个parent的两笔并行提交
此时可以分别提交并且review,如果其中一笔已经review过了并且入库,那么此时另外一笔提交需要执行rebase操作然后再 --amend提交。
2、如果是递进的两笔提交
递进的并行提交,即C2和C3都是已经提交到gerrit上去review了。后面由于C2在review时被打回来,这个时候可以进行如下操作。
第一步本地仓库在做好备份之后,在当前的模块中执行"repo sync . ",这个会把当前的git状态和远程仓库最新的提交同步。接下来是需要在gerrit上把C2这笔patch通过Cherry Pick命令,把C2这笔提交同步到本地,然后做对应的review的修改,完了之后执行commit --amend以补丁方式提交代码,然后重新通过push命令把这提代码推送到gerrit上再次接受review。
第二步则是继续Cherry Pick C3的代码到本地,如果和C2的修改有冲突的地方,就需要手动解冲突,然后再提交动作。
Cherry Pick的地方如下:
3、多人操作同一份代码,如何解冲突。
比如两个人同时在往服务器提交代码,首先需要在Gerrit上接受review。此时这两个人都是基于远程仓库最新的状态提交的代码,如下:
接下来,C3首先通过review,然后就subimt合入了远程仓库的分支中,这个时候就会出现如下的情况:
C2的这笔提交,依然是不能直接顺利地入库了。这里也分两种情况:
第一种情况是已知明确C2和C3没有冲突,那么在C2要入库的时候,可以执行rebase操作,变基处理,直接添加到C3的后面去。
第二种情况是不明确C2和C3有没有冲突,或者很大可能存在冲突,那么就需要执行上面提到的Cherry Pick操作了。首先repo sync . 更新最新的远程仓库状态,这个时候其实就会把C3更新下来,接着Cherry Pick C2这笔提交,存在冲突手动解冲突,然后再commit --amend提交,这样指向关系就清晰了,如下:
这样,在C2通过review之后,就可以顺利入库了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。