zoukankan      html  css  js  c++  java
  • gerrit 修改前一次提交的方法(转载)

    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 -“MSG”

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

    方法三:只是修改作者

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

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

  • 相关阅读:
    HTTP协议
    从Iterator到async/await
    那些年曾谈起的跨域
    设计模式之观察者模式与发布订阅模式
    移动Web深度剖析
    浅析JavaScript异步
    mySql入门-(二)
    C# WEB项目MVC框架原理及约定
    Dynamics CRM 邮箱设置 “允许使用凭据进行电子邮件处理” 被禁用的解决
    Win10系统恢复IE 11浏览器
  • 原文地址:https://www.cnblogs.com/xiaoerlang/p/4507726.html
Copyright © 2011-2022 走看看