我有一个有多个分支的项目。我一直在将它们推送到GitHub,现在其他人正在从事该项目,我需要从 GitHub 中提取他们的分支。它在master中运行良好。但是说有人创建了一个分支xyz。如何xyz从 GitHub 中提取分支并将其合并到xyz我的分支中localhost?
xyz
localhost
我实际上在这里有我的答案: 在 Git 中推送和拉取分支
但我得到一个错误“![拒绝]”和一些关于“非快进”的东西。
有什么建议?
但我得到一个错误“![拒绝]”和一些关于“非快进”的东西
那是因为 Git 无法将分支中的更改合并到您当前的 master 中。假设您已经签出 branch master,并且想要合并到远程 branch other-branch。当你这样做时:
master
other-branch
$ git pull origin other-branch
Git基本上是这样做的:
$ git fetch origin other-branch && git merge other-branch
也就是说, apull只是 afetch后跟 a merge。但是,当pull-ing 时,Git 只有other-branch 在 可以执行 快进 合并时才会合并。 快进 合并是一种合并,其中您尝试合并的分支的头部是您要合并的分支的头部的 直接后代。 例如,如果您有这个历史树,那么合并other-branch将导致快进合并:
pull
fetch
merge
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!