如何将远程主服务器合并到本地分支

时间:2011-08-26 06:06:50

标签: git branch pull

我有一个项目的本地分支(“configUpdate”),我已经从别人的项目中分叉了,我已经对它进行了大量的更改,并希望将他们所做的更改合并到我的项目中。当地分公司。<​​/ p>

我试过

git pull --rebase origin configUpdate

但它没有抓住最新的变化 - 我如何合并两者? (对于奖励积分,我使用pull --rebase命令做了什么?)

5 个答案:

答案 0 :(得分:316)

如果(假设您当前在分支configUpdate上):

git fetch
git rebase origin/master

简而言之:

  • git merge branchname从分支branchname接受新提交,并将它们添加到当前分支。如有必要,它会自动在顶部添加“合并”提交。

  • git rebase branchname接受来自分支branchname的新提交,并将其“插入”您的更改。更准确地说,它修改了当前分支的历史记录,使其基于branchname的提示,并在此基础上进行了任何更改。

  • git pullgit fetch; git merge origin/master基本相同。

  • git pull --rebasegit fetch; git rebase origin/master基本相同。

那么为什么要使用git pull --rebase而不是git pull?这是一个简单的例子:

  • 您开始处理新功能。

  • 当您准备推送更改时,其他开发人员已推送了几个提交。

  • 如果您git pull(使用合并),除了自动创建的合并提交之外,您的更改将被新提交隐藏。

  • 如果你git pull --rebase,git会将你的主人快进到上游,然后将你的更改应用到最上面。

答案 1 :(得分:70)

我发现它是:

$ git fetch upstream
$ git merge upstream/master

答案 2 :(得分:33)

切换到您当地的分行

  

&GT; git checkout configUpdate

将远程主控合并到您的分支

  

&GT; git rebase master configUpdate

如果您有任何冲突,请更正它们,并为每个冲突的文件执行命令

  

&GT; git add [path_to_file / conflicted_file](例如git add app / assets / javascripts / test.js)

继续改变

  

&GT; git rebase - 继续

答案 3 :(得分:12)

git rebase似乎对我不起作用。在git rebase之后,当我尝试将更改推送到我的本地分支时,我不断收到错误(“提示:更新被拒绝,因为当前分支的提示位于其远程对应的后面。集成远程更改(例如'git pull。 ..')再推之前。“)即使在git拉后。最终对我有用的是git merge。

git checkout <local_branch>
git merge <master> 

如果你是像我这样的初学者,这里有一篇关于git merge vs git rebase的好文章。 https://www.atlassian.com/git/tutorials/merging-vs-rebasing

答案 4 :(得分:0)

这适用于使用 Visual Studio 的开发人员。

  1. 点击 Git 菜单 > 管理分支 > remotes/origin
  2. 右键单击 master > 将“origin/master”合并到 [本地分支]

注意:master 在最近的 git 存储库中被称为 main。

enter image description here