注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学习笔记

正确的方法如同学习书法,开始的时候要临摹,临摹好了然后创造自己的风格。

 
 
 

日志

 
 

[SCM笔记]git rebase用法小结  

2013-03-14 21:09:27|  分类: SCM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.     git rebase –onto

作用:用来删除某个或某几个提交

先建立一个文档文件,里面写入如下内容:

###########1

###########2

###########3

###########4

###########5

每一个分别对应一个提交,为test1test2test3test4test5

现在想删除test2提交信息,并将其提交内容合并到test3中去,可使用如下所示命令,其中cfcc52ctest2的哈希值。

#git rebase --onto cfcc52c^ cfcc52c HEAD

运行命令之后,git会新建一个分支并切换过去进行删除、合并处理,处理完之后自动删除新建的分支回到之前的分支上。

# git branch

* (no branch)

  master

命令会把test2test3的所作修改一起当作test3的修改并列出,供用户选择,如下所示:

$ git diff

diff --cc hello.txt

index 6087d09,68ba778..0000000

--- a/hello.txt

+++ b/hello.txt

@@@ -1,1 -1,3 +1,6 @@@

  ###########1

++<<<<<<< HEAD

++=======

+ ###########2

+ ###########3

++>>>>>>> test3

解决冲突之后,这里保留test3的修改,删除<<<<<<<HEAD内容。然后执行add命令,添加修改文件,带continue参数执行rebase,可以看到rebase会依次应用test3test4test5的补丁。

$ git add –A

$ git rebase --continue

Applying: test3

Applying: test4

Applying: test5

之后,查看提交日志,可以看到提交test2已经被删除,但其修改被合并到test3中。

test1->test3->test4->test5

$ git show ae2489cadc8

    test3

 

diff --git a/hello.txt b/hello.txt

index 6087d09..68ba778 100644

--- a/hello.txt

+++ b/hello.txt

@@ -1 +1,3 @@

 ###########1

+###########2

+###########3

删除多个提交时,只需要修改git rebase --onto cfcc52c^ cfcc52c HEAD的第二个参数即可,第一个cfcc52c^表示从cfcc52c^开始但不包含,第二个参数cfcc52c表示到cfcc52c为止,但包含。

2.     git rebase -i

作用:可以用来删除修改提交,并能修改提交的信息。

test1test3test4test5、合并成一个提交,并将提交信息修改为test。执行如下语句,其中30db45e^test1的前一次提交。

对弹出的信息作出如下修改,test1改为r表示修改提交信息,其他的改为f,表示放弃提交信息。

# git rebase –i 30db45e^

pick 30db45e test1

pick ae2489c test3

pick 94ce2c5 test4

pick f3182bb test5

 

r 30db45e test1

f ae2489c test3

f 94ce2c5 test4

f f3182bb test5

这样,test1test3test4test5、合并成一个提交test。如下:

$ git show ecf92cff

+###########1

+###########2

+###########3

+###########4

+###########5

  评论这张
 
阅读(2514)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017