如何将远程主机合并到本地分支

我有一个项目的本地分支(“configUpdate”),我已经从其他人的项目中派生出来了,并且已经完成了对其的更改,并且想要将他们所做的更改合并到本地分支中。

我试过了

git pull --rebase origin configUpdate 

但它没有抓住最新的变化 – 我怎么能合并这两个? (也是为了奖励点我用pull --rebase命令做了什么?)

如何(假设你目前在分支configUpdate):

 git fetch git rebase origin/master 

简而言之:

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

  • git rebase branchnamebranchname分支中接受新的提交,并将它们“插入”你的更改之下。 更准确地说,它修改了当前分支的历史,使其基于branchname的提示, branchname在此基础上做出任何更改。

  • git pull基本上和git fetch; git merge origin/master git fetch; git merge origin/master

  • git pull --rebase基本上和git fetch; git rebase origin/master git fetch; git rebase origin/master

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

  • 你开始工作一个新的function。

  • 当您准备好推进您的更改时,其他开发人员已经推动了一些提交。

  • 如果你使用git pull (它使用合并),除了自动创build的合并提交之外,你的改变将被新的提交所掩盖。

  • 如果你用git pull --rebase ,git会快速的将你的主机转到上游, 然后在上面应用你的更改。

我发现它是:

 $ git fetch upstream $ git merge upstream/master 

切换到您的本地分支

> git checkout configUpdate

将远程主人合并到你的分支

> git rebase master configUpdate

如果你有任何冲突,纠正它们,并为每个冲突的文件做命令

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

继续rebase

> git rebase – 继续

git rebase似乎不适合我。 在git rebase之后,当我尝试将更改推送到本地分支时,我不断收到错误消息(“提示:由于当前分支的提示位于远程对象的后面,所以更新被拒绝。 ..')之前推再次。“)甚至拉后git。 最后为我工作的是git合并。

 git checkout <local_branch> git merge <master> 

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