Git 如何更新/同步拉取请求?

Git 如何更新/同步拉取请求?,git,github,pull-request,git-pull,github-for-windows,Git,Github,Pull Request,Git Pull,Github For Windows,在我的本地机器中,我使用下面的命令克隆了一个存储库 git clone https://github.com/kp/ml_project.git 现在在最初的项目中,有一个pull请求,它的pull请求号是22。因此,我使用以下命令添加了pull请求 cd ml_project git fetch origin pull/22/head:pr22 现在,在pull request 22中经过几天之后,它们被添加了新的提交,我希望这些提交能够提供给我。我能做什么?如何将新提交更新/获取到我的分

在我的本地机器中,我使用下面的命令克隆了一个存储库

git clone https://github.com/kp/ml_project.git
现在在最初的项目中,有一个pull请求,它的pull请求号是22。因此,我使用以下命令添加了pull请求

cd ml_project
git fetch origin pull/22/head:pr22

现在,在pull request 22中经过几天之后,它们被添加了新的提交,我希望这些提交能够提供给我。我能做什么?如何将新提交更新/获取到我的分支pr22

确保没有签出分支pr22,1然后运行相同的git获取。然后,如果您愿意,您可以再次git签出分支

如果他们只添加了提交,它将正常运行。如果它们替换了提交,则取出一些,放入一些不同的提交,例如,在重新基址之后,您将得到一个非快进错误

如果您想丢弃旧的pr22值并存储新的更新提示,只需强制更新获取,不管是否存在快进条件。要强制获取,可以使用git fetch-force。这告诉git fetch在每次refname更新时设置force标志,或者在包含要强制的ref的特定refspec上使用加号+字符:

git fetch origin +refs/pull/22/head:refs/heads/pr22
在这种情况下,只有一个refspec,2 so+和-force做同样的事情。在这里,我已经在单个refspec中详细说明了两个ref。如您所见,您可以在常见情况下缩写ref。不过,在脚本中完整地拼写它们是明智的,因为Git有时会以令人惊讶的方式将部分引用解析为完整引用

1对于实例,运行git checkout master切换,或者在当前提交时使用git checkout-detach进入分离头模式。这两种方法都可以避免更新当前分支名称的陷阱

2A refspec大致上是一对ref或引用,它们之间有一个冒号:pull/22/head:pr22是refspec的一个示例。在refspec前面加上加号将使其成为强制更新。有关这些的更多信息,请参阅和

ref是任何分支名称(如master)、标记名称(如v2.1)、远程跟踪名称(如origin/master)或任何其他此类名称。所有这些名称(Git)都是引用。分支名称只是一个全名以refs/heads/开头的ref,标记名称只是一个全名以refs/tags/开头的ref。为了方便起见,Git通常通过剥离REF/头/或REF/标签/零件来缩写这些REF


当您使用缩写形式时,Git必须猜测全名应该是什么。如果您有一个名为master的分支和一个名为master的标记,Git将首先猜测标记,所以不要这样做,并在脚本中拼写全名。

谢谢。。。你能告诉我什么是裁判吗?这是什么意思?我试过了,但返回的结果是致命的:拒绝获取非裸库的当前分支refs/heads/pr22。哦,你现在已经签出了。首先查看其他分支,然后再进行一次。