当我在开发分支做git pull origin master的时候会发生什么?

比方说,我有一个私人主题分支称为开发提前2个提交。

git pull origin master做什么?

从本地开发的远程高手拉一切,合并呢? 取出本地主分支中的所有内容并将其合并?

有没有一种方法来更新从开发没有git checkout master

git pull origin master将主分支从远程被调用的起点拉到你当前的分支。 它只影响你当前的分支,而不是你的本地主分支。

它会给你看起来像这样的历史:

 - x - x - x - x (develop) \ / x - x - x (origin/master) 

您的本地主分支在这方面是无关紧要的。 git pull实质上是git fetchgit merge的组合; 它获取远程分支,然后将其合并到您当前的分支。 这是一个像任何其他合并; 它没有做任何神奇的事情。

如果你想更新你的本地主分支,你别无select,只能检查出来。 合并到一个没有被检出的分支是不可能的,因为Git需要一个工作树来执行合并。 (尤其是,为了报告合并冲突并让您解决它们,这是绝对必要的。)

如果你碰巧知道拉入主服务器是一个快进的(即你在本地主服务器没有任何提交,而不是源服务器的主服务器),你可以按照这个答案中的描述来解决问题 。

一旦你通过使用提交你的分支变化

 git add -A git commit -m <message> 

你可以这样做:

 git pull origin master 

进入你的分支,这将保持你的提交在主拉的顶部。 你的分支现在甚至与主+你的提交顶部。 所以,你现在可以做到:

 git push 

而git会把你的改变和主提交一起推到你的分支上。 你可以很容易地把它合并到Github上的主。