当我在开发分支中使用git拉取原始主机时会发生什么?

当我在开发分支中使用git拉取原始主机时会发生什么?,git,pull,Git,Pull,假设我有一个名为develope的私有主题分支,在master之前提交了2次 git pull origin master是做什么的 从本地的远程主机中提取所有内容开发并合并它?拉本地主分支中的所有内容并合并它 是否有一种方法可以在不首先使用git checkout master的情况下从develop更新master?git pull origin master将主分支从远程调用的origin拉入当前分支。它只影响当前分支,而不影响本地主分支 它会让你的历史看起来像这样: - x - x -

假设我有一个名为develope的私有主题分支,在master之前提交了2次

git pull origin master是做什么的

从本地的远程主机中提取所有内容开发并合并它?拉本地主分支中的所有内容并合并它


是否有一种方法可以在不首先使用git checkout master的情况下从develop更新master?

git pull origin master
将主分支从远程调用的origin拉入当前分支。它只影响当前分支,而不影响本地主分支

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

- x - x - x - x (develop)
   \         /
    x - x - x (origin/master)
你当地的主分支在这方面是无关紧要的
git pull
本质上是
git fetch
git merge
的组合;它获取远程分支,然后将其合并到当前分支中。这是一个像任何其他合并;它没有任何魔力

如果您想更新您的本地主分支,您别无选择,只能签出它。不可能合并到未签出的分支中,因为Git需要一个工作树来执行合并。(特别是,报告合并冲突并允许您解决冲突是绝对必要的。)


如果您碰巧知道拉入master将是一个快速的过程(即您在本地master分支中没有不在origin的master中的提交),您可以解决这个问题。

一旦您使用

git add -A
git commit -m <message>
进入您的分支,这将使您的提交保持在主拉之上。你的分支现在将与master+你的提交保持平衡。因此,您现在可以执行以下操作:

git push

git将把您的更改和主提交一起推送到您的分支中。然后,您可以轻松地将其合并到Github上的master。

如果本地未签出分支是可快速转发的,则可以将其推入该分支。但这是一个相当棘手的问题;)@奈特尔:真的!推送是一种优雅的方式,因为它会检查推送是否适合您。我喜欢
update ref
解决方案,因为你可以在回放中留下正确的跟踪,而我就是这样着迷的。@e-satis:鼓励新用户对问题进行投票非常好。。。但值得回答和值得投票并不一定是一回事。(虽然你的问题两者都有。)@jefromi:是的,很不幸的捷径。如果在@mrj的答案之后阅读,这是一个很好的补充。大多数情况下,我们在拉动时处于类似的工作流中
git push