3

我想更改最后一次提交内容。我可以进行本地更改。然后执行

git commit --amend

我还可以执行以下操作:

git rebase -i HEAD~

选择要编辑的提交。进行本地更改,然后执行:

git rebase --continue
  1. 在这种情况下,这两个命令有区别吗?
  2. 在 Gerrit 的上下文中,何时涉及 gerrit 的 CHANGE-ID ?
4

2 回答 2

4

不,他们都使用以前的提交作为模板来生成新的提交。Gerrit 更改 ID 仅由提交注释中的行跟踪,因此只要您不修改或删除该行 Gerrit 仍然可以跟踪此新提交作为引用该更改。

于 2013-01-09T10:14:33.073 回答
1

假设您有 3 个提交 A->B->C,并且您更改了提交 A 中包含的文件,因此,您应该将提交 A 放在顶部

git stash /* to save your changes */

git rebase -i HEAD~3
move commit A at the bottom of commits B&C
save&exit

如果你做

git log

你会有这个序列B->C->A,你做

git add /*your changed file*/
git commit --amend

现在您必须返回提交 A 以不更改 gerrit 依赖项列表

git rebase -i HEAD~3
move commit A at the top of commit B&C
save&exit

现在,如果您推送到 gerrit,您将拥有相同的旧订单

于 2013-01-09T11:33:47.213 回答