推送到 Gerrit 时如何更正错误的 Change-Id?
How can I correct an incorrect Change-Id when pushing to Gerrit?
我推送到 Gerrit,我的代码经过审查,以便做出有效的评论。我进行了更改,并进行了新的提交和推送,假设我已经创建了一个新的补丁集。
但是,我忘记在 IntelliJ 中勾选“修改提交”框:
这意味着新的提交被推送到带有新的 Change-Id 的 Gerrit,因此更改不会与之前的推送相关联。现在我的审阅者不能(轻易地)在这两个更改之间建立联系,将来任何人也不能。
我的提交消息是多行的,因此如果我想执行 git amend
.
,则无法在命令行上轻易更改
我的方法是尝试撤消“错误”提交 --- 但我最终在 Git 地狱中感到困惑。
我最后:
- 在我的笔记本电脑上检出 origin/master 到一个新的存储库并且
再次手动进行更改(是的,真的),然后
- 停用我的 .git/hooks 目录中的 commit-msg 挂钩,然后
- 使用手动添加到消息中的所需 Change-Id 进行提交,然后
- 推送到 Gerrit。
- 最后我重新激活了 commit-msg 钩子
这不是最好的方法。它有效,但它不是最好的方法。
做什么?
您应该压缩 最后两个提交合并为一个,并在消息中保留初始 Change-ID。 squash 允许您将不同的提交合并为一个。它发生在交互式 rebase 过程中。解释 using command line.
您可以使用 this example 来使用界面。
我推送到 Gerrit,我的代码经过审查,以便做出有效的评论。我进行了更改,并进行了新的提交和推送,假设我已经创建了一个新的补丁集。
但是,我忘记在 IntelliJ 中勾选“修改提交”框:
这意味着新的提交被推送到带有新的 Change-Id 的 Gerrit,因此更改不会与之前的推送相关联。现在我的审阅者不能(轻易地)在这两个更改之间建立联系,将来任何人也不能。
我的提交消息是多行的,因此如果我想执行 git amend
.
我的方法是尝试撤消“错误”提交 --- 但我最终在 Git 地狱中感到困惑。
我最后:
- 在我的笔记本电脑上检出 origin/master 到一个新的存储库并且
再次手动进行更改(是的,真的),然后 - 停用我的 .git/hooks 目录中的 commit-msg 挂钩,然后
- 使用手动添加到消息中的所需 Change-Id 进行提交,然后
- 推送到 Gerrit。
- 最后我重新激活了 commit-msg 钩子
这不是最好的方法。它有效,但它不是最好的方法。
做什么?
您应该压缩 最后两个提交合并为一个,并在消息中保留初始 Change-ID。 squash 允许您将不同的提交合并为一个。它发生在交互式 rebase 过程中。解释 using command line.
您可以使用 this example 来使用界面。