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地址从未有过成功的提交,这个修改会不成功。在别的分支做一次成功提交之后,就可以修改了。

gerrit 修改前一次提交的方法(转载)的更多相关文章

  1. springmvc下js控制表单提交(表单提交前检验,提交后获取json返回值)

    这个问题我搞了四天,终于搞懂.因为对js很不熟悉.郁闷的是后台代码出错总可以设置断点调试,前端js代码出错只能通过浏览器提供一些运行数据来分析,很不习惯. 首先说下逻辑:这是一个注册功能,我希望,注册 ...

  2. GIT仓库如何恢复到前一次提交

    GIT仓库如何恢复到前一次提交   通过使用Git版本恢复命令reset,可以回退版本.reset命令有3种方式: git reset –mixed:此为默认方式,不带任何参数的git reset,即 ...

  3. $.ajax防止多次点击重复提交的方法

    第一种:使用$.ajaxPrefilter( [dataTypes], handler(options, originalOptions, jqXHR) ) 方法:$.ajaxPrefilter()方 ...

  4. A、B同时打开一个页面进行同一条数据库记录进行修改,A修改完成后提交表单,A修改的数据保存完成后;当B也修改完成后,提交数据进行数据修改。此时B修改的内容会覆盖A修改的内容,请问如何避免?

    A.B同时打开一个页面进行数据中的一条数据进行修改,A修改完成后提交表单,数据修改保存完成后B开始页面也修改完成,开始提交进行修改.此时B修改的内容会覆盖A的内容,请问如何避免? 通过搜索和我个人总结 ...

  5. Git 实战手册(一): 批量修改log中的提交信息

    本文须知 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 背景介绍 事情的起源是这样的:迷恋的谷歌的我最近申请了一个新的 googl ...

  6. Eclipse中修改包名,提交SVN时报 is out of date,怎么办?

    问题:Eclipse中修改包名,提交SVN时报 is out of date,怎么办?描述: Hi,大家好! 我的问题如题,在不考虑用TortoiseSVN客户端直接删除目录这个方法的情况下,有什么方 ...

  7. IDEA修改git账号及密码的方法

    IDEA修改git账号及密码的方法: 1.file->settings->passwords 2.重启IDEA 3.执行一次提交或更新 当执行提交或更新之后,idea会自动提示输入账号.密 ...

  8. git revert 后悔了 还原修改前的版本 + git 常用命令

    昨天手残 然后在GitHub for windows 上点了revert 然后就给重置了 更手残的是又给同步了 .  但是 GitHub 会保留之前的版本 . 只要删掉本次修改就可. 解决方案:  g ...

  9. mysql忘记密码如何重置密码,以及修改root密码的三种方法

    1.先将MySQL停止. 命令:systemctl  stop mysqld       #停掉MySQL 命令:systemctl status mysqld         #查看状态 2.然后跳 ...

随机推荐

  1. 老麦看点:SEO高手的两大秘诀

    一.技术真的是主导因素吗? 很多人站长朋友操作一段网站之后,发现自己的排名还是在渺渺无期,真可谓:“众里寻排名千百度,可是排名却不在阑珊处”,于是我们开始怀疑自己,怀疑自己的技术等,但是我们静下心里仔 ...

  2. /etc/passwd和/etc/shadow

    这两个路径分别是用于存储密码和隐形密码 让我们先来观察它,在了解它 [root@oc3408554812 ~]# cat /etc/passwd |grep carltoncarlton    :   ...

  3. bzoj 3124: [Sdoi2013]直径

    #include<cstdio> #include<iostream> #define M 400009 #define ll long long using namespac ...

  4. ubuntu 14.04 下找不到命令,路径出错

    在安装一些东西时,可能操作上不小心把路径覆盖或打错,造成一些基本命令如ls mkdir等无法使用,就会出现以下提示错误. 错误: 由于/usr/bin 不在PATH 环境变量中,故无法找到该命令 根本 ...

  5. NodeJs和ReactJs单元测试工具——Jest

    Jest——Painless JavaScript UnitTesting 特点 适应性强 默认使用Jasmine断言 模块化的 可扩展的 可配置的 沙箱式且快速 虚拟化JS环境,模拟浏览器 并行运行 ...

  6. 简单通过java的socket&serversocket以及多线程技术实现多客户端的数据的传输,并将数据写入hbase中

    业务需求说明,由于公司数据中心处于刚开始部署的阶段,这需要涉及其它部分将数据全部汇总到数据中心,这实现的方式是同上传json文件,通过采用socket&serversocket实现传输. 其中 ...

  7. php大力力 [040节] 买了一天域名,整了一天后台,新网后台不懂啊

    php大力力 [040节] 买了一天域名,整了一天后台,新网后台不懂啊]]] 还有万网那些域名要备案,备案,备案中...................wqnmlgb 今天摩托车的前后轮被扎了,tnn ...

  8. TopCoder----卖柠檬

    1. 题目描述 Problem Statement   You are playing a game called Slime Tycoon.You will be selling Slimonade ...

  9. 无线网络的切换bat

    内网外网都是无线,切换起来麻烦,做了两个个bat(注意,切换网络的时候有延时,就点两次). -------------------下面的是切换到内网-------------------------- ...

  10. PHP正则表达式的快速学习方法

    1.入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或 ...