假设我有一个名为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将是一个快进(即你没有在你的本地主分支中提交不在源代码中的提交)你可以解决,如本答案所述.
使用以下命令将更改提交到分支后
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 中。