git pull origin master不更新origin / master?
根据文档, git pull执行git fetch然后是git merge,但是在这种情况下,执行git pull origin master应该执行git fetch origin master right? 但是,似乎并没有这样做。 这是一个例子。
假设我的远程原点主(在我的情况下是在GitHub上)有以下的历史logging:
commit 1111111 : my first commit commit 2222222 : a commit from someone else
我只在本地做第一次提交,就像下面的演出一样
git checkout master git log --pretty=format:'%h' -n 1 1111111 git checkout origin/master git log --pretty=format:'%h' -n 1 1111111
从这里我做我的拉,看看结果如下:
git checkout master git pull origin master git log --pretty=format:'%h' -n 1 2222222 git checkout origin/master git log --pretty=format:'%h' -n 1 1111111
可以看出,拉事实上更新我的主分支与来自远程起源的新的提交,但我的本地起源/主仍然是在那里。 强迫我做下面的事情
git fetch origin master git checkout origin/master git log --pretty=format:'%h' -n 1 2222222
这是正确的行为git拉或可能我有什么configuration错过? 我查看了git pull手册页,没有看到任何暗示,但我可能已经错过了。
这有点奇怪,但如果你使用git pull [remote] <refspec>
它实际上不会更新远程参考。 如果以某种方式思考它是有道理的:因为你指定了一个特定的引用来获取,所以它不必查找关于你的远程分支的任何东西,所以它本质上不知道它是什么远程分支应该更新。 当然可以弄明白,如果最终得到修正,我也不会感到惊讶,但这是现有的行为。 (邮件列表上可能有消息 – 我不知道。)
不过,您可以轻松解决此问题。 如果你使用git pull origin/master
,由于你指定了通过远程分支来获取什么,它应该更新那个远程分支。 如果你是在你的主分支(或任何其他分支跟踪起源/主),你可以做git pull
,让它填写默认值,它会更新远程分支。
这在git-pull
手册页中有logging,在EXAMPLES下也是其他地方最简洁的。 相关部分:
下一步将远程分支合并到当前分支中:
$ git pull origin next
这会在FETCH_HEAD中暂时保留下一个副本,但不会更新任何远程跟踪分支。 使用远程跟踪分支,可以通过调用提取和合并来完成相同的操作:
$ git fetch origin $ git merge origin/next