From:http://sinojelly.sinaapp.com/2011/08/git-changes-submitted-by-the-previous-method-pay-special-attention-to-change-id-unchanged/

当使用git提交代码到gerrit后,发现此次提交有问题,需要重新提交,就需要修改此次提交了。

基本概念


Change:
Gerrit中的一个Change就是一个Review任务,它对应一个commit。
每个commit,应该是为了一个目的的完整修改。如果某一次修改不完全,就需要修正该commit。
每一次修正之前的commit,重新提交时,都应该保持Change-Id不变,这样就不会产生新的Change,而是在原有的Change下产生一个新的Patch Set。
所有的Patch Set中,只有最新的一个是真正有用的,能够合并的。
 
图1:Change和Change-Id
 
图2:Patch Set
 
 

修改前一次提交的方法

方法一:用–amend选项

#修改需要修改的地方。
git add .
git commit –amend

注:这种方式可以比较方便的保持原有的Change-Id,推荐使用

方法二:先reset,再修改

这是可以完全控制上一次提交内容的方法。但在与Gerrit配合使用时,需特别注意保持同一个commit的多次提交的Change-Id是不变的。
否则,就需要Abondon之前的Change,产生一些垃圾不说,操作得不对,会使得简单的事情复杂化,甚至无法合并。
git reset HEAD^
#重新修改
git add .
git commit -m “MSG”

特别注意:为了保持提交到Gerrit的Change不变,需要复制对应的Change-Id到commit msg的最后,可以到Gerrit上对应的Change去复制,参见图1。

方法三:只是修改作者

如果email不对,会无法提交到Gerrit,所以这个命令也可能用到。
git commit --amend --author='Your Name <you@example.com>'

注:如果该email地址从未有过成功的提交,这个修改会不成功。在别的分支做一次成功提交之后,就可以修改了。

最新文章

  1. CentOS与ubuntu添加eclipse桌面快捷方式的方法整理
  2. KMP算法心得
  3. url重写后发布出错问题
  4. Java之--Java基础知识
  5. flask中的session对象方法
  6. BestCoder Round #49
  7. Trident内核中取验证码图片的几种方法
  8. ICC_lab总结——ICC_lab3:布局
  9. Java中读取txt文件中中文字符时,出现乱码的解决办法
  10. python简单分布式demo
  11. [INS-40724] No locally defined network interface matches the SCAN subnet.
  12. vue+axios实现移动端图片上传
  13. [No000013F]WPF学习之X名称空间详解
  14. Maven的配置与下载
  15. 8.翻译:EF基础系列----EF中实体的状态
  16. jQuery因mouseover,mouseout冒泡产生的闪烁问题
  17. phpok -- 域名问题
  18. mysql 创建表时注意事项
  19. PHP IDE PHPStorm配置支持友好Laravel代码提示方法
  20. PHP运行环境之IIS FastCGI 进程意外退出解决办法

热门文章

  1. Lua知识备忘录
  2. cron
  3. ios资源
  4. mssqlserver 分日志(日志文件过大)
  5. python基础教程-第二章-列表和元组
  6. Python开发入门与实战12-业务逻辑层
  7. OrCAD搭建Access数据库
  8. c#中各类日期的计算方法,收藏
  9. 点击按钮回到页面顶部或者某个高度时的问题,JQUERY
  10. 第二个Sprint冲刺团队贡献分