繁体   English   中英

git pull无法从远程提取更改

[英]git pull failing to pull changes from remote

我的git日志如下所示: 在此处输入图片说明

据我了解,origin / master和origin / HEAD在远程存储库中,而master在本地计算机上。 更改(由我从另一台计算机推送到存储库)创建了提交0e17adc。 现在,我想将该更改带入本地存储库。 我认为正确的方法是:

git checkout master
git pull

但是,这返回:

Already up-to-date.

为什么会发生这种情况? 在我看来master似乎与origin / master不同步,我以为git pull进行git fetch ,然后git merge所以应该将origin / master与master合并吗?

据我了解,origin / master和origin / HEAD在远程存储库中,而master在本地计算机上。

这在细节上并不太正确(细节很重要),但有一个正确的想法来支持: origin/master在您的本地计算机中,但这是Git 记住您的Git从其(原始)Git得到的东西的方式。 当您运行git fetch (或进行git pull运行git fetch )时,您的Git会在您的Git所存储的URL以及名称origin调用其Git。 他们的Git列出了他们的master及其提交哈希ID,而您的Git则确保您具有所需的提交,然后设置自己的origin/master来记住他们的master

现在,我想将该更改带入本地存储库。 我认为正确的方法是:

 git checkout master git pull 

那是人们通常这样做的一种方式。 (我更喜欢避免git pull me和打破单独的命令。)

但是,这返回:

 Already up-to-date. 

如果运行git branch -vv (两次详细:非常冗长),您应该会看到类似的内容,但有所不同(这在Git的Git存储库中):

* master          5be1f00a9 [origin/master] First batch after 2.16

在方括号这里,事情origin/master ,是当前上游设置master 每个分支可以有一个(只有一个)上游,您可以使用git branch --set-upstream-to

当您运行git pull (或像我一样将其分解为组件)时,Git:

  1. 运行git fetch :另一个从默认位置获取到当前分支上游上游远程站点的Git,在这种情况下,它是origin/masterorigin部分; 然后
  2. 运行第二个Git命令,通常是git merge :该命令的参数取决于您的Git从另一个Git得到的内容以及上游设置的其余部分。

同样,如果某些设置被严重破坏,还有很多细节可能很重要,但是总之,如果git branch -vv origin/master显示为上游,则:

git fetch origin
git merge origin/master

应该执行的,当你运行了什么情况的相当于git pull ......这应该导致git log你是显示在图像输出。 因此,在这一点上,我最好的猜测是master的上游设置不正确。

您可以运行git branch -vv来查看它,或使用:

$ git rev-parse --symbolic-full-name "master@{upstream}"

在我的情况下打印:

refs/remotes/origin/master

(我将引号括在master@{upstream}上面,因为某些命令行解释器有时会使用不带括号的大括号来做有趣的事情,但是大多数时候您不需要这样做)。

如果上游是错误的,并且您是master并且想要修复它,请运行:

git branch --set-upstream-to=origin/master

假设添加--set-upstream-to时,您的Git版本至少为1.8.0。 在较旧的Git中,您可以使用:

git config branch.master.remote origin
git config branch.master.merge master

git branch --set-upstream命令,请注意这里最后没有-to ,很难正确使用;避免使用它)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM