git commit --amend和git rebase在Gerrit下的区别

3

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

git commit --amend

我还可以做以下事情:
git rebase -i HEAD~

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

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

4
不。它们都使用前一次提交作为模板来生成新的提交。Gerrit change-id 只是由提交评论中的行跟踪,因此只要您不修改或删除该行,Gerrit 就可以将此新提交视为引用该更改。

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,你将会得到相同的旧顺序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接