【Git入门之十】Rebase操作
2013-10-05 14:18
302 查看
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309627
Rebase,衍合?变基?唉,我也不知道要怎么翻译合适。。。变基怪怪的,我擦勒,你才变基呢。。。
[cpp] view
plaincopy
#做一些无聊的修改和提交
$ 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。
[cpp] view
plaincopy
$ git log --pretty=oneline
897fa79def2cf256b7f14d0ec0fcb67e8f61a814 test_rebase5
7dff3e4ad7416f0370b4579393a0c8a8fc02efbd test_rebase4
37be873b514afd9d8f6536cd893eadc3e32b4966 test_rebase3
5ae88f5a0454066d820f6c1687b6d01f59f39dbd test_rebase2
128a2f5cdb325bcbdb26b35741fad2a2fba49832 test_rebase1
...还有很多
利用《git rebase》把最后5个(如上)提交联合为1个。
[cpp] view
plaincopy
git rebase -i HEAD~5
这个时候会打开Vim,这款神器我就不多说了,爱的多,恨的也不少,在Ubuntu上用过,自己不熟练所以感觉效率不高。Vim的常用命令自己google吧。
[cpp] view
plaincopy
#创建并跳转到分支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,衍合?变基?唉,我也不知道要怎么翻译合适。。。变基怪怪的,我擦勒,你才变基呢。。。
1.Rebase提交
rebase命令允许你编辑你的提交历史,比如你可以把多个提交(commit)联合成一个,可以对它重新排序,跳掉某个提交或者编辑提交信息。这是非常有用的,当你要再推送到远程仓库之前要想重新编辑提交信息。以下举个例子把多个提交联合成一个。[cpp] view
plaincopy
#做一些无聊的修改和提交
$ 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。
[cpp] view
plaincopy
$ git log --pretty=oneline
897fa79def2cf256b7f14d0ec0fcb67e8f61a814 test_rebase5
7dff3e4ad7416f0370b4579393a0c8a8fc02efbd test_rebase4
37be873b514afd9d8f6536cd893eadc3e32b4966 test_rebase3
5ae88f5a0454066d820f6c1687b6d01f59f39dbd test_rebase2
128a2f5cdb325bcbdb26b35741fad2a2fba49832 test_rebase1
...还有很多
利用《git rebase》把最后5个(如上)提交联合为1个。
[cpp] view
plaincopy
git rebase -i HEAD~5
这个时候会打开Vim,这款神器我就不多说了,爱的多,恨的也不少,在Ubuntu上用过,自己不熟练所以感觉效率不高。Vim的常用命令自己google吧。
2.Rebase分支
对多个分支进行rebase操作,rebase命令为一个分支的更改生成一个补丁,然后把这个补丁应用到另外一个分支上,那么最后的源代码和merge是一样的,使用这种方式进行分支的合并更为合理。[cpp] view
plaincopy
#创建并跳转到分支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
相关文章推荐
- 【Git入门之十】Rebase操作
- [置顶] 【Git入门之十】Rebase操作
- 【Git入门之十】Rebase操作
- git日常使用操作 (快速入门)
- linux下git的简单操作(入门)
- Git入门——'查询命令'总结与文件的基本操作
- git入门(3.文件操作)
- Git的详细操作----菜鸟入门
- git操作之git rebase
- GitHub入门与实践(2)掌握Git 2、分支操作
- 简单的git入门介绍及常用操作
- Git基础入门(四)Git基本操作2
- git操作之rebase操作
- 关于Git的入门操作(安装、提交代码至仓库)
- git入门操作命令(转载)
- 【Git入门之四】操作项目
- GitHub入门与实践(2)掌握Git 3、更改提交操作
- git 入门操作
- Git操作简单入门及相关命令
- git入门操作