Git 在 Gerrit 中审查提交时推送另一个提交

标签 git gerrit

我正在寻找一种方法来推送另一个提交,同时上一个提交仍在审查中并且没有 merge 到 repo。

例如:

git add .

git commit -m "my first commit"

git push origin HEAD:refs/for/master

此提交仍在 Gerrit 中进行审核。现在我在本地做了另一个改变。

git commit -m "my second commit"

git remote update

git rebase

git push origin HEAD:refs/for/master

这会将两个提交再次推送到 Gerrit。有没有办法在 merge 第一个提交之前只推送我的第二个提交?

最佳答案

您的方法没有任何问题。您可以毫无问题地以这种方式工作。您只需要知道,如果您需要修改第一个提交(由于某些审查问题),您必须重新设置第二个提交的基线才能 merge (提交)它(请参阅下文)。

你是这样工作的:

BASE --- A --- B

如果您更改提交 A,您将拥有:

BASE --- A --- B
   |
   |--- A'

在 rebase 之后,你将拥有:

BASE --- A --- B
   |
   |--- A' --- B'

如果可能,请始终尝试“并行”处理您的提交,因为这样您可以更改您想要的任何提交,而不会影响其他提交。像这样:

git checkout -b change1 origin/master
< edit, add, commit >
git push origin HEAD:refs/for/master

git checkout -b change2 origin/master
< edit, add, commit >
git push origin HEAD:refs/for/master

你会得到这个:

BASE --- A
   |
   |--- B

现在,如果您更改 A,则无需对 B 进行 rebase :

BASE --- A
   |
   |--- A'
   |
   |--- B

Gerrit 将在审查/提交过程后 merge (取决于配置的 merge 策略)两个最终提交。

关于Git 在 Gerrit 中审查提交时推送另一个提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48575293/

相关文章:

gerrit - 如何观察 Gerrit 的变化

Gerrit 添加审稿人

git - Gerrit 补丁集依赖于过时的补丁集

Git 钩子(Hook)不工作

git说项目描述文件没有被修改,即使它实际上被修改了

git - 是否可以使用 git hook 在暂存、添加或推送之前替换密码?

Windows cmd git bash : conda. sh 没有这样的文件或目录(Windows 行结尾,缺少斜杠)

git - Gerrit 触发器手动工作但不能自动工作

xcode - 找不到 FileMerge(opendiff 工具)但我安装了 xcode 4.6

WSL 上的 Git 克隆给出 "permission denied"错误 [WSL1]