用力或不用力推动 gerrit 改变?

push to gerrit change with force or without?

我的 gerrit 服务器发生了变化,我在本地存储库中提取并签出,如下所示:

git fetch <repoURL> refs/changes/<xx/yyyyyy/z> && git checkout FETCH_HEAD

在那之后,我的本地回购切换到一些分离状态提交,我想在其中以我使用 git 的通常方式工作,例如:

  1. 添加另一个提交(仍然缺少下载的 gerrit 更改)更改

  2. 将这两个合并为一个,保留原始提交消息(使用 gerrit 更改 ID):

    git rebase -i HEAD~2

现在我可以推送到 gerrit(以创建一个新的(下一个)gerrit 补丁集):

3. git push <repoURL> HEAD:refs/for/branch

还是必须用力推:

3. git push -f <repoURL> HEAD:refs/for/branch

首先,您获取的零钱是什么状态?是“开放”(未合并)还是“关闭”(合并)?

如果它被合并,你不需要使用 fetch/checkout 命令下载更改,你应该只获取你的存储库并在分支中获取更改(因为它已经集成)。

如果不合并,你想做什么?您是要修复更改还是要基于此更改进行其他更改?

根据你的文字,我想你想修复这个变化(因为你打算加入这些变化),那么正确的做法是:

1- 下载更改:

git fetch <repoURL> refs/changes/<xx/yyyyyy/z> && git checkout FETCH_HEAD

2- 进行更改

3- 修改提交(保持相同的 Change-Id)

git commit --amend

4-推送修改后的提交

git push <repoURL> HEAD:refs/for/branch