当我在开发分支中执行git pull origin master时会发生什么?

时间:2012-01-05 17:12:04

标签: git pull

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

git pull origin master做了什么?

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

有没有办法在没有git checkout master的情况下首先更新master?

2 个答案:

答案 0 :(得分:81)

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

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

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

您当地的主分支机构与此无关。 git pull基本上是git fetchgit merge的组合;它获取远程分支,然后将其合并到当前分支中。它像其他任何一样合并;它没有做任何神奇的事情。

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

如果您碰巧知道拉入主人会是一个快进(即您在本地主分支中没有提交不是原始人的主人),您可以解决,{{ 3}}

答案 1 :(得分:3)

提交后,使用

更改分支
git add -A
git commit -m <message>

然后你可以这样做:

git pull origin master

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

git push

并且git会将您的更改与主提交一起推送到您的分支。您可以轻松地将其合并到Github上的master中。