我有一个有多个分支的项目.我一直把它们推给GitHub,现在有人正在研究这个项目,我需要从GitHub中取出它们的分支.它在master中工作正常.但是说有人创建了一个分支xyz
.我如何xyz
从GitHub中拉出分支并将其合并到xyz
我的分支localhost
?
我实际上在这里得到了答案: 在Git中推拉分支
但我得到一个错误"![拒绝]"和一些关于"非快进"的事情.
有什么建议?
但我得到一个错误"![拒绝]"和"非快进"的事情
那是因为Git无法将分支的更改合并到当前的主服务器中.假设你已经签出了分支master
,并且想要在远程分支中合并other-branch
.当你这样做:
$ git pull origin other-branch
Git基本上是这样做的:
$ git fetch origin other-branch && git merge other-branch
也就是说,a pull
只是a fetch
后跟a merge
.然而,当pull
-ing,Git会只合并other-branch
,如果它可以进行快进合并.一个快进合并是合并在您试图合并到分支的头部是一个直接后裔要合并分支的头.例如,如果您有此历史记录树,那么合并other-branch
将导致快进合并:
O-O-O-O-O-O ^ ^ master other-branch
但是,这不是一个快速合并:
v master O-O-O \ \-O-O-O-O ^ 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
这将从主控器创建一个新分支"xyz"并直接将其检出.
然后你做:
git pull origin xyz
这会将新分支拉到您当地的xyz
分支.
最好的方法是:
git checkout -b/
git fetch
将获取最新的分支列表.
现在你可以 git checkout MyNewBranch
完成:)
有关更多信息,请参阅docs:git fetch
我不确定我是否完全理解这个问题,但拉动现有的分支是这样完成的(至少它对我有用:)
git pull origin BRANCH
这假设您的本地分支是从origin/BRANCH创建的.
这有助于我在将其合并到其他之前获得远程分支:
git fetch repo xyz:xyz git checkout xyz