【发布时间】:2019-02-18 15:16:37
【问题描述】:
需要将现有的 git repo 推送到 Gerrit,但是这样做会遇到问题:
remote: ERROR: missing Change-Id in commit message footer
因为 repo 不包含 .git/hooks/commit-msg。现在我已经安装了脚本,但是需要更改数百条提交消息以在任何地方添加Change-Id。如何以最好和最简单的方式自动制作它?
可能的解决方案:
- 我看到一些topics here 建议使用
git rebase -i,但是它是交互式的并且主要是手动过程。 -
Others 使用
sed命令和git rebase作为提交消息编辑器。就我而言,确切的rebase命令是什么? -
Third proposes 使用
git filter-branch命令,但它仅适用于尚未推送到上游分支的当前分支上的提交。
对于上述问题还有其他解决方案、修复或建议吗?谢谢!
【问题讨论】:
-
Gerrit 需要将 Change-Id 追溯添加到现有 Git 存储库中,这似乎是荒谬的。这有帮助吗? stackoverflow.com/questions/14789666/…
-
@Schwern,我们的 Gerrit 设置禁止直接推送绕过审核,或者我没有访问权限这样做:命令
git push gerrit HEAD:master产生错误:! [remote rejected] HEAD -> master (prohibited by Gerrit) -
看来你可以通过推到
HEAD:refs/heads/master来绕过审查。见stackoverflow.com/a/16215375/14660 和gerrit-review.googlesource.com/Documentation/… -
@Schwern,不,我不能:仍然`! [远程拒绝] HEAD -> master(Gerrit 禁止)`。正如stackoverflow.com/a/16215375/630169 的评论中所述:这需要在 gerrit 访问面板的“参考:refs/heads/*”部分设置“推送”权限。