Git修改前一次提交的方法(特别注意保持Change-Id不变)


分类: git
  838人阅读  评论(0)  收藏  举报

    基本概念

如果发现上一次提交的内容存在问题,就需要修改了。



基本概念


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

图1:Change和Change-Id


图2:Patch Set





修改前一次提交的方法

方法一:用  --amend 选项

[plain]  view plain copy print ?
  1. #修改需要修改的地方。  
  2. git add .  
  3. git commit –amend  
注:这种方式可以比较方便的 保持原有的Change-Id,推荐使用。



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

[plain]  view plain copy print ?
  1. git reset HEAD^  
  2. #重新修改  
  3. git add .  
  4. git commit -m “MSG”  
特别注意:为了保持提交到Gerrit的Change不变,需要复制对应的Change-Id到commit msg的最后,可以到Gerrit上对应的Change去复制,参见图1。



方法三:只是修改作者

如果email不对,会无法提交到Gerrit,所以这个命令也可能用到。

[html]  view plain copy print ?
  1. git commit –amend –author=<user-email>  
注:如果该email地址从未有过成功的提交,这个修改会不成功。在别的分支做一次成功提交之后,就可以修改了。
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是的,你可以使用 Git 提交钩子自动添加 Change-Id,或手动添加它。下面是两种方法: 1. 自动添加 Change-Id:你可以使用 Git 提交钩子来自动添加 Change-IdGit 提交钩子是一些自定义脚本,可以在 Git 操作期间触发。你可以创建一个提交钩子脚本,使其在每次提交时自动添加 Change-Id。这样,你就不必手动添加 Change-Id 了。这里是一个示例提交钩子脚本: ``` #!/bin/sh commit_msg_file=$1 commit_msg=$(cat $commit_msg_file) if ! grep -q "^Change-Id:" $commit_msg_file; then change_id=$(uuidgen) echo "Change-Id: $change_id" >> $commit_msg_file fi ``` 将该脚本保存为 `commit-msg` 文件,并将其放置在 `.git/hooks` 目录下。确保该文件具有执行权限。现在每次提交时,Git 将自动为你添加 Change-Id。 2. 手动添加 Change-Id:如果你不想使用提交钩子来自动添加 Change-Id,你可以手动添加它。要手动添加 Change-Id,请按照以下步骤操作: a. 生成一个唯一的 Change-Id:你可以使用任何工具来生成一个唯一的字符串。例如,你可以使用 `uuidgen` 命令来生成一个 UUID。保存生成的字符串。 b. 将 Change-Id 添加到提交信息中:在提交信息的末尾添加一行 `Change-Id: <change-id>`,其中 `<change-id>` 是你在第一步中生成的唯一字符串。 c. 保存提交信息并提交:保存提交信息并使用 `git commit` 命令提交更改。现在你的提交应该包含一个有效的 Change-Id

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值