git : local -> gerrit;如果避免不断产生新的patch


如果,你已经提交了一次gerrit,共4个commit(1,2,3,4(top)),都被review过了, 但是其中有一个(例如第二个commit: 2)是不合格的提交,要求重新修改。

如果你在本地,git rebase -i HEAD~3, 然后重新git push gerrit HEAD:refs/for/, 那么,除了commit2之外, commit3 ,commit4,在gerrit上也重新生成了新的patch,尽管这个patch和之前的patch内容没变,但是review过得标志被清空了,因为是新的patch了,讨厌的不知如此, 你添加过的review list 人员都会不断受到你的更新的垃圾邮件。

解决的办法:

从gerrit上checkout 出 commit2到本地的一个新的branch上,这时候,commit1和commit2会被拉下来, git commit --amend 来修改commit2, push之后gerrit上的1,3,4不会生新的patch。 注意,3,4不生成新的patch可以理解,1也不生成新的patch么? 是的, 因为用的是git commit --amend;但是如果用git rebase -i HEAD~2在本地来修改commit2的话, push之后 gerrit 上的commit1就生成新的patch; 但是如果用git rebase -i HEAD~1的话, 也是没问题的,因为我只rebase 了commit2, 而commit1没有发生任何变化。


ps: gerrit上的checkout 和 cherry-pick  区别: 

checkout 会把这个commit的depends on 这个有依存关系的commit一并更新下来,

cherry-pick 则只是单独的将这个commit更新下来,会破坏原有的依存关系。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值