如何将远程主机合并到本地分支
我有一个项目的本地分支(“configUpdate”),我已经从其他人的项目中派生出来了,并且已经完成了对其的更改,并且想要将他们所做的更改合并到本地分支中。
我试过了
git pull --rebase origin configUpdate
但它没有抓住最新的变化 – 我怎么能合并这两个? (也是为了奖励点我用pull --rebase
命令做了什么?)
如何(假设你目前在分支configUpdate):
git fetch git rebase origin/master
简而言之:
-
git merge branchname
从branchname
分支中branchname
新的提交,并将它们添加到当前分支。 如有必要,它会自动在顶部添加一个“合并”提交。 -
git rebase branchname
从branchname
分支中接受新的提交,并将它们“插入”你的更改之下。 更准确地说,它修改了当前分支的历史,使其基于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