git命令详解( 五 )
此篇只会来介绍rebase和merge的区别
rebase
下面我们进行一个小练习来练习一下rebase
看一下题目要求:
- 共有三个特性分支 ——
side1
side2
和side3
- 将这三分支按顺序推送到远程仓库
- 因为远程仓库已经被更新过了,所以我们还要把那些工作合并过来
执行命令:git fetch
执行命令:git rebase o/master side1
执行命令:git rebase side1 side2
执行命令:git rebase side2 side3
执行命令:git rebase side3 master
执行命令:git push
好了,我们已经完成了,现在我们可以看到我们本地和远程都已经是线性的,美滋滋
merge
下面我们来试一下用merge来解决这个问题
执行命令:git fetch
执行命令:git checkout o/master
执行命令:git merge side1
执行命令:git merge side2
执行命令:git merge side3
执行命令:git checkout master
执行命令:git merge C11
执行命令:git push
好了,现在我们也用merge完成了
总结:
为了 push 新变更到远程仓库,你要做的就是包含远程仓库中最新变更。意思就是只要你的本地分支包含了远程分支(如 o/master
)中的最新变更就可以了,至于具体是用 rebase 还是 merge,并没有限制。
那么既然没有规定限制,为何前都在着重于 rebase 呢?为什么在操作远程分支时不喜欢用 merge
呢
在开发社区里,有许多关于 merge 与 rebase 的讨论。以下是关于 rebase 的优缺点:
优点:
- Rebase 使你的提交树变得很干净, 所有的提交都在一条线上
缺点:
- Rebase 修改了提交树的历史
比如, 提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的,但实际上是在 C3 之前。
一些开发人员喜欢保留提交历史,因此更偏爱 merge。而其他人可能更喜欢干净的提交树,于是偏爱 rebase。仁者见仁,智者见智。
git命令详解( 五 )的更多相关文章
- Git命令详解
一个中文git手册:http://progit.org/book/zh/ 原文:http://blog.csdn.net/sunboy_2050/article/details/7529841 前面两 ...
- Git 命令详解及常用命令
Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: 1 2 3 4 Work ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- git命令详解( 七 )
此为git命令详解的第七篇 这章我们可以来逐渐揭开 git push.fetch 和 pull 的神秘面纱了.我们会逐个介绍这几个命令,它们在理念上是非常相似的. git push的参数 git ...
- git命令详解( 四 )
此篇为git命令详解的第四篇,话不多说,我们直接上知识点好吧 git Push 偏离的工作 gitPush: 此命令负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录.一旦 git ...
- git命令详解( 二 )
这是git详解的第二篇,最近这个加班有点虚,所以文章也写的比较懒了,一到加班不得已,保温杯里泡枸杞啊,不扯了,今天我们来看看git的第二篇 这篇内容主要是git的一些远程命令 远程仓库 git clo ...
- Git命令详解(一)-个人使用
本文暂时不会涉及到团队如何使用Git的内容,而是从个人的角度探讨如何用好Git. 约定 绿色的5位字符表示提交的ID,文中用<commit>表示,分别指向父节点.分支用橘色显示,分别指向特 ...
- git命令详解( 六 )
此为git命令的第六篇 远程跟踪分支 不知道大家有没有发现在前面几篇中Git 好像知道 master 与 o/master 是相关的.当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 mas ...
- git命令详解( 八)
此为记录git的第八篇,前七篇为远程篇,工作中最常用的都在前七篇,因为要在远程分支上合作开发 在提交树上移动 撤销变更 在提交树上移动 在接触 Git 更高级功能之前,我们有必要先学习在你项目 ...
- git命令详解( 三 )
此篇为git命令的第三篇 目录 git Pull 模拟团队合作 Git Pull 在上一篇的结尾我们已经知道了如何用 git fetch 获取远程的数据, 现在我们学习如何将这些变化更新到我们的工作当 ...
随机推荐
- js小方法积累,将一个数组按照n个一份,分成若干数组
// 把一个数组按照一定长度分割成若干数组 function group(array, subGroupLength) { let index = 0; let newArray = []; whil ...
- django 中自定义过滤器
多参数过滤器
- plugin-barcodescanner 报错
https://github.com/phonegap/phonegap-plugin-barcodescanner/issues/418 ionic cordova platform rm andr ...
- 对一个元素 同时添加单击onclick 和 双击ondblclick 触发冲突的解决
需求说明:单击列表项内容后,吧啦吧啦,双击列表项内容后,巴拉巴拉巴拉~~~ 解决思路:卧槽 ,其实我是没思路的,当时唯一的想法就是,看个人点击鼠标的速度了,双击快一点,触发双击事件ლ(′◉❥◉`ლ), ...
- cf1107e uva10559区间dp升维
/* 区间dp,为什么要升维? 因为若用dp[l][r]表示消去dp[l][r]的最大的分,那么显然状态转移方程dp[l][r]=max{dp[l+1][k-1]+(len[l]+len[k])^2+ ...
- hdu4370 dijkstra矩阵转单向边最短路矩阵+自环闭环
/* 矩阵太神奇了Orz,网上的题解大多是spfa,不过我发想dijkstra也能做 把n*n的矩阵看成是单向边距离矩阵就行 */ #include<iostream> #include& ...
- 安装mysql后在/var/log/mysqld.log 中找不到临时密码
centos7通过yum装完mysql,使用grep 'temporary password' /var/log/mysqld.log找不到root密码打开mysqld.log中根本没有tempora ...
- Allegro PCB Design GXL (legacy) 设置十字大光标
Allegro PCB Design GXL (legacy) version 16.6-2015 1.菜单:Setup > User Preferences... 2.User Prefere ...
- API接口加密方式说明
标签: 接口 2016年10月11日 19:41:20 13299人阅读 评论(0) 收藏 举报 分类: API(5) 版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog ...
- JS判断元素 动画是否执行完成
使用animationend方法 var ele = document.getElementById("box"); ele.addEventListener("anim ...