Gerrit recreating change-ids
我正在使用Gerrit。 我使用以下命令
1 2 3
| $ cd .git/hooks
$ scp -P 29418 demo@localhost:hooks/commit-msg .
$ cd ../.. |
这会将更改ID添加到我的提交消息中,但是,如果我修改了提交,它将创建一个新的更改ID。 因此,当我回过头使用Gerrit时,它没有添加补丁集,而是在创建一个全新的评论条目。
有什么建议吗?
找到了答案,但是stackoverflow不会让我回答自己的问题。
所以这对我来说是一个完全错误。
当我尝试提交时
git commit --amend -m"初始提交"
我内联了提交消息,这消除了change-Id,从而给了我一个新的。
-
您确定ChangeId在提交消息的最后一段中吗? 看看:ChangeId
-
嗯,我刚刚读完您的问题:-),是的-m是一个典型的错误。
commit-msg钩子工作方式如下:
检查提交消息中是否具有更改ID。
如果不是,则生成一个。
如果键入git commit --amend并编辑提交消息,则您仍具有旧的change-id(很好)。
但是,如果键入git commit --amend -m"....",则删除了change-id,因此gerrit会生成新的。
经验法则:
请勿将--amend -m与gerrit一起使用。
-
如果确实需要,可以编写一个prepare-commit-msg钩子,将钩子松开changeid,然后放回去。
-
kes! 发现为时已晚:)
-
--ammend和-m起作用了……您只需要记住在推入git rebase --interactive之前-进行清理即可。 当然,您必须确保这样做时不要更改更改ID ;-)
如果git commit --amend或git commit --amend -m"...."没有帮助,并且gerrit仍然抱怨缺少更改ID。 (这种情况的发生主要是由于网络问题)
这是解决问题的方法(确保在检出目录参考的父目录上应用了commit-msg钩子):
使用git stash存储更改。
gitk &用于将更改硬性地重新设置为仅先前的提交。
然后从回购git pull --rebase中拉出并重新设置基础。
然后使用git stash apply(参考)应用隐藏的更改。
如果使用git mergetool解决合并冲突(如有)。
再次使用git commit或git commit --amend重新提交更改,这生成了一个新的change-Id
使用git push ...命令将更改推送到存储库上的分支。
周围也有类似的问题供参考
git commit --amend
手动删除Change-Id行,保存并关闭
git commit --amend --no-edit
在没有一个钩子的情况下,该钩子将创建一个新的Change-Id哈希。