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

e-s*_*tis 54 git pull

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

怎么git pull origin master办?

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

并且有没有办法从头开始更新master git checkout master

小智 82

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

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

- x - x - x - x (develop)
   \         /
    x - x - x (origin/master)
Run Code Online (Sandbox Code Playgroud)

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

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

如果你碰巧知道拉入master将是一个快进(即你没有在你的本地主分支中提交不在源代码中的提交)你可以解决,如本答案所述.

  • 如果可以快速转发,您可以推送到本地未签出的分支。但这真是一个黑客;) (2认同)

Vla*_*lad 9

使用以下命令将更改提交到分支后

git add -A
git commit -m <message>
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

git pull origin master
Run Code Online (Sandbox Code Playgroud)

进入您的分支,这将使您的提交保持在 master pull 之上。您的分支现在将与 master + 您的提交保持一致。所以,你现在可以这样做:

git push
Run Code Online (Sandbox Code Playgroud)

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