您的位置:首页 > 其它

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

2013-02-19 10:13 387 查看
如果,你已经提交了一次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更新下来,会破坏原有的依存关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐