我有一个项目的本地分支(“configUpdate”),我已经从别人的项目中分叉了,我已经对它进行了大量的更改,并希望将他们所做的更改合并到我的项目中。当地分公司。</ p>
我试过
git pull --rebase origin configUpdate
但它没有抓住最新的变化 - 我如何合并两者? (对于奖励积分,我使用pull --rebase
命令做了什么?)
答案 0 :(得分:316)
如果(假设您当前在分支configUpdate上):
git fetch
git rebase origin/master
简而言之:
git merge branchname
从分支branchname
接受新提交,并将它们添加到当前分支。如有必要,它会自动在顶部添加“合并”提交。
git rebase branchname
接受来自分支branchname
的新提交,并将其“插入”您的更改。更准确地说,它修改了当前分支的历史记录,使其基于branchname
的提示,并在此基础上进行了任何更改。
git pull
与git fetch; git merge origin/master
基本相同。
git pull --rebase
与git 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 checkout <local_branch>
git merge <master>
如果你是像我这样的初学者,这里有一篇关于git merge vs git rebase的好文章。 https://www.atlassian.com/git/tutorials/merging-vs-rebasing
答案 4 :(得分:0)