我正在寻找一种方法来推送另一个提交,同时上一个提交仍在审查中并且没有 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/