Git Gerrit:如何在审查中重新确定远程更改提交的基础?

Git Gerrit:如何在审查中重新确定远程更改提交的基础?,git,gerrit,Git,Gerrit,我想我有一种理解上的问题 例如:我在远程存储库中有三个提交,如下所示: Commit A: Already merged Commit B: Under review, rebased over the webinterface from an other user, based on commit A Commit C: Under review, based on commit B 我的本地存储库如下所示: Commit A: Already merged Commit B: Under

我想我有一种理解上的问题

例如:我在远程存储库中有三个提交,如下所示:

Commit A: Already merged
Commit B: Under review, rebased over the webinterface from an other user, based on commit A
Commit C: Under review, based on commit B
我的本地存储库如下所示:

Commit A: Already merged
Commit B: Under review, based on commit A
Commit C: Under review, based on commit B

所以现在的问题是,我不知道如何获得提交B的新版本,重新定基。如果我尝试git pull或git fetch,git告诉我,没有什么需要更新的,但是如果我尝试上传B的新版本,由于我的本地B和远程B之间的差异,我出现了一个错误。

最简单的方法可能是查看Gerrit web UI中的提交B,然后(如果您使用的是“更改屏幕2”布局)查看右上角的“下载”下拉菜单,然后单击旁边的“复制到剪贴板”图标“Checkout”。如果您将其粘贴到命令行,Git将在“detached HEAD”中签出提交B“模式。请注意,这不会给您提交C,但我想这是您想要的。

谢谢,我想我明白了。但是我如何用这个分离的头commit B替换我的commit B呢?例如:在
foo
文件夹中提交B更改
foo/bar/test.txt
im,然后像你说的那样签出B。我的本地B服务器是否自动更换?还是我必须“告诉”git它应该使用新的B?如果是,如何进行?您的本地提交B不会自动替换。在根据Gerrit的B检查了分离的头部后,你基本上正在研究与你的历史相比的另一个历史。但你想要实现的是什么?你只是想在Gerrit的B和C之上创建一个提交D来继续工作吗?是的,这是基本问题。因为如果a B被远程更改,我就不能再推我的本地评论了。。因此,我必须将本地B替换为远程更改的B,以推送C和其他新提交。我想这正是我想要解决的问题,你链接的问题提到了一些你目前还不清楚的细节:在Gerrit上,另一个用户是否也从web界面将C重设为新的B?您是否在本地执行了git pull--rebase?您是否在本地使用分支而不是分离的头部状态?如果所有这些都是真的,最简单的解决方案可能是从Gerrit将本地分支重置为新的C并继续工作。如果您的工作树是干净的,您可以按照我的回答下载更改,使用
git checkout-
git reset--hard-FETCH\u HEAD
切换回您的分支。