我正在使用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,从而给我一个新的。
答案 0 :(得分:26)
commit-msg hook工作方式:
如果您输入git commit --amend
并编辑提交消息,您仍然有旧的更改ID(这很好)。
但是如果你输入git commit --amend -m "...."
你已经删除了更改ID,那么gerrit会生成新的。
拇指规则:
不要将--amend -m
与gerrit一起使用。
答案 1 :(得分:1)
如果git commit --amend
或git commit --amend -m "...."
没有帮助,并且格里特仍抱怨缺少的更改-Id。 (这主要是由于网络问题而发生的)
这就是我解决的问题(确保我已在签出目录reference的父目录上应用了commit-msg挂钩):
git stash
隐藏更改。gitk &
将更改硬转换为上一次提交。
git pull --rebase
。git stash apply
,reference应用隐藏的更改。
使用git mergetool
解决合并冲突(如果有)。git commit
或git commit --amend
再次在更改中重新投放,这会产生新的更改-Id git push ...
命令将更改推送到存储库上的分支。答案 2 :(得分:0)
git commit --amend
git commit --amend --no-edit
如果没有该钩子,钩子将创建一个新的Change-Id哈希。