[置顶] 【Git入门之十】Rebase操作
2024-08-27 07:37:55
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309627
Rebase,衍合?变基?唉,我也不知道要怎么翻译合适。。。变基怪怪的,我擦勒,你才变基呢。。。
1.Rebase提交
rebase命令允许你编辑你的提交历史,比如你可以把多个提交(commit)联合成一个,可以对它重新排序,跳掉某个提交或者编辑提交信息。这是非常有用的,当你要再推送到远程仓库之前要想重新编辑提交信息。以下举个例子把多个提交联合成一个。
- #做一些无聊的修改和提交
- $ echo "test_rebase1" > jackydata01
- $ git commit -a -m "test_rebase1"
- [master 128a2f5] test_rebase1
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase2" > jackydata01
- $ git commit -a -m "test_rebase2"
- [master 5ae88f5] test_rebase2
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase3" > jackydata01
- $ git commit -a -m "test_rebase3"
- [master 37be873] test_rebase3
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase4" > jackydata01
- $ git commit -a -m "test_rebase4"
- [master 7dff3e4] test_rebase4
- 1 file changed, 1 insertion(+), 1 deletion(-)
- $ echo "test_rebase5" > jackydata01
- $ git commit -a -m "test_rebase5"
- [master 897fa79] test_rebase5
- 1 file changed, 1 insertion(+), 1 deletion(-)
看一下log。
- $ git log --pretty=oneline
- 897fa79def2cf256b7f14d0ec0fcb67e8f61a814 test_rebase5
- 7dff3e4ad7416f0370b4579393a0c8a8fc02efbd test_rebase4
- 37be873b514afd9d8f6536cd893eadc3e32b4966 test_rebase3
- 5ae88f5a0454066d820f6c1687b6d01f59f39dbd test_rebase2
- 128a2f5cdb325bcbdb26b35741fad2a2fba49832 test_rebase1
- ...还有很多
利用《git rebase》把最后5个(如上)提交联合为1个。
- git rebase -i HEAD~5
这个时候会打开Vim,这款神器我就不多说了,爱的多,恨的也不少,在Ubuntu上用过,自己不熟练所以感觉效率不高。Vim的常用命令自己google吧。
2.Rebase分支
对多个分支进行rebase操作,rebase命令为一个分支的更改生成一个补丁,然后把这个补丁应用到另外一个分支上,那么最后的源代码和merge是一样的,使用这种方式进行分支的合并更为合理。
- #创建并跳转到分支br
- $ git branch br
- $ git checkout br
- Switched to branch 'br'
- #修改br分支中的Jackydata01
- $ echo "this wiil be rebase to master" >jackydata01
- #提交br分支中的修改
- $ git commit -a -m "rebase to master"
- [br 5c2a431] rebase to master
- 1 file changed, 1 insertion(+), 1 deletion(-)
- #跳转到master分支
- $ git checkout master
- Switched to branch 'master'
- Your branch is ahead of 'origin/master' by 1 commit.
- (use "git push" to publish your local commits)
- #使用rebase把br的改变应用到master
- $ git rebase br
- First, rewinding head to replay your work on top of it...
- Fast-forwarded master to br.
- #显示master中jackydata01的内容
- $ cat jackydata01
- this wiil be rebase to master
最新文章
- 利用rebase来压缩多次提交
- JavaScript小细节点罗列
- SQL Server 显示执行一条语句的执行时间
- ADB am 命令详细参数
- Python之virtualenv安装
- css实现一段不够一行时居中显示,多于一行时两端对齐
- 运行时(iOS)
- robotframework笔记8
- JAVA的JDBC连接与sql操作
- java 无法找到main类解决办法
- 7 个改变世界的 Java 项目
- ORACLE11.2.0 SQLPLUS 报 error while loading shared libraries
- windows线程同步的总结
- Order Management Useful Scripts
- ARM LCD屏调试3--屏的应用编程
- GMA Round 1 极坐标的愤怒
- Android应用系列:双击返回键退出程序
- LeetCode35.搜索插入位置
- beta 圆桌 6
- CentOS7.5之Sqoop1.4.7的安装使用
热门文章
- SpringMVC07处理器方法的返回值
- 你以为你了解最常用的string.substring()的几个常见问题吗?
- 30款jQuery常用网页焦点图banner图片切换 下载 (转)
- mysql慢查优化总结
- ADSL拨号连接
- PL/SQL中的变量
- c++中 cin、cin.get()、cin.getline()、cin.getchar()的区别
- osg三维重建的两种方法剖析:三角面片(osgUtil::DelaunayTriangulator)和四角面片(osg::HeightField) (2)
- mysql 5.5 升级到 mysql 5.6
- 《python基础教程》笔记之 基础知识