在 Git 中整合来自不一样分支的修改主要有两种方法:merge 以及 rebase。git
merge有两种方法,fast-forward(快速合并)和three-way merge(三方合并)服务器
两个branch在一条线上,合并master和feature0只须要将master指针后移spa
状况:3d
选取C2,C4,C6生成快照,造成新commit C7,当前branch指向C7指针
例子:(想要将client合并到master,但不想合并server)code
git rebase --onto 变基目标分支 变基过渡分支 变基当前分支server
$ git rebase --onto master server client
快速合并master和client,以下对象
server完成了,想要合并到master处blog
git rebase --onto 变基目标分支 变基当前分支three
$ git rebase master server
git rebase -i
或git rebase --interactive
,使用该指令能够合并提交历史,其后参数能够是某一特定提交对象ID或执行特定提交对象的指针,将输出该提交对象以后的全部提交对象(不包括该提交对象),如HEAD~
代表输出当前分支最新一次提交对象,HEAD~~
代表输出当前分支的最新的两次提交对象。HEAD~n表示输出当前分支最后n次提交
git rebase -i origin/master
:能够获取最后一次从origin远端仓库拉取(pull)或推送(push)以后的全部提交。
永远不要对已经推到主干分支服务器或者团队其余成员的提交进行变基。
变基操做的实质是丢弃一些现有的提交,而后相应地新建一些内容同样但实际上不一样的提交。若是你已经将提交推送至某个仓库,而其余人也已经从该仓库拉取提交并进行了后续工做,此时,若是你用 git rebase 命令从新整理了提交并再次推送,你的同伴所以将不得再也不次将他们手头的工做与你的提交进行整合,若是接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。