Git从GitHub中拉出某个分支

我有一个多分支的项目。 我一直在推他们到GitHub ,现在有人正在为他们工作,我需要从GitHub拉。 它在主人工作正常。 但是说我有分支xyz。 我怎么能从GitHub中拉出分支xyz,并将其合并到我的本地主机上的分支xyz?

实际上我的答案是: 在Git中推拉分支

但是,我得到一个错误“![拒绝]”和一些关于“非快进”。

有什么build议么?

但是,我得到一个错误“![拒绝]”和一些关于“非快进”

这是因为Git无法将来自分支的更改合并到当前主控中。 假设您已经签出了分支master ,并且您想要在远程分支other-branch进行合并。 当你这样做:

 $ git pull origin other-branch 

Git基本上是这样做的:

 $ git fetch origin other-branch && git merge other-branch 

也就是说, pull只是一个merge之后的fetch 。 但是,在pulling的时候,Git 只会合并other-branch 如果它能够执行快进合并的话。 快进合并是一个合并,您要合并的分支的头部是要合并的分支头部的直接后代 。 例如,如果你有这个历史树,那么合并other-branch会导致一个快进合并:

 OOOOOO ^ ^ master other-branch 

但是,这不会是一个快速的合并:

  v master OOO \ \-OOOO ^ other-branch 

要解决你的问题,首先获取远程分支:

 $ git fetch origin other-branch 

然后将其合并到您当前的分支(我将假设这是master ),并修复任何合并冲突:

 $ git merge origin/other-branch # Fix merge conflicts, if they occur # Add merge conflict fixes $ git commit # And commit the merge! 

只需明确跟踪远程分支,一个简单的git pull就可以完成你想要的任务:

 git branch -f remote_branch_name origin/remote_branch_name git checkout remote_branch_name 

或者更适合于分叉的GitHub文档 :

 git branch -f new_local_branch_name upstream/remote_branch_name 

您可以使用以下命令将分支拉到分支上。

 git pull {repo} {remotebranchname}:{localbranchname} git pull origin xyz:xyz 

当你在主分支上时,你也可以先检查一个分支,如:

 git checkout -b xyz 

这将创build一个新的分支“xyz”,并直接将其检出。

那你做:

 git pull origin xyz 

这将新的分支拉到当地的xyz分支。

最好的方法是:

 git checkout -b <new_branch> <remote repo name>/<new_branch> 

我不知道我完全理解这个问题,但拉现有的分支是这样做的(至less它适用于我:)

 git pull origin BRANCH 

这是假设您的本地分支创build的原产地/分支。

git fetch会抓取最新的分支列表。

现在你可以git checkout MyNewBranch

完成:)


有关更多信息,请参阅文档: git fetch

这帮助我得到了远程分支之前合并到其他:

 git fetch repo xyz:xyz git checkout xyz 

你也可以这样做

 git pull -r origin master 

修复合并冲突(如果有)

 git rebase --continue 

-r是为了rebase。 这将使你从分支结构

  v master ooooo \ooo ^ other branch 

  v master oooooooo ^ other branch 

这将导致更清洁的历史。 注意:如果您已经将其他分支推送到原点(或任何其他远程),则可能必须在重新绑定之后强制推送分支。

 git push -f origin other-branch