格里特重新创造变革

时间:2011-10-25 18:12:48

标签: git gerrit

我正在使用gerrit。我使用了以下命令

$ cd .git/hooks
$ scp -P 29418 demo@localhost:hooks/commit-msg .
$ cd ../..

这会将change-id添加到我的提交消息中,但是如果我修改为提交它会创建一个新的更改ID。因此,当我回到gerrit时,它没有添加补丁集,它正在创建一个全新的评论条目。

有什么建议吗?

找到答案,但stackoverflow不会让我回答我自己的问题。

所以这对我来说是完全错误的。 当我试图提交时     git commit --amend -m“Initial Commit”

我正在内联提交消息,这正在消除更改ID,从而给我一个新的。

3 个答案:

答案 0 :(得分:26)

commit-msg hook工作方式:

  1. 检查提交消息中是否有更改ID。
  2. 如果没有,请生成一个。
  3. 如果您输入git commit --amend并编辑提交消息,您仍然有旧的更改ID(这很好)。

    但是如果你输入git commit --amend -m "...."你已经删除了更改ID,那么gerrit会生成新的。

    拇指规则: 不要将--amend -m与gerrit一起使用。

答案 1 :(得分:1)

如果git commit --amendgit commit --amend -m "...."没有帮助,并且格里特仍抱怨缺少的更改-Id。 (这主要是由于网络问题而发生的)

这就是我解决的问题(确保我已在签出目录reference的父目录上应用了commit-msg挂钩):

  1. 使用git stash隐藏更改。
  2. 使用gitk &将更改硬转换为上一次提交。 enter image description here
  3. 然后从Repo git pull --rebase
  4. 中拉出并退出
  5. 然后使用git stash applyreference应用隐藏的更改。 使用git mergetool解决合并冲突(如果有)。
  6. 使用git commitgit commit --amend再次在更改中重新投放,这会产生新的更改-Id
  7. 使用git push ...命令将更改推送到存储库上的分支。
  8. for reference

    也有类似的问题

答案 2 :(得分:0)

  1. git commit --amend
  2. 手动删除 Change-Id 行,然后保存并关闭
  3. git commit --amend --no-edit

如果没有该钩子,钩子将创建一个新的Change-Id哈希。