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