git rebase 的妙用

首先来看应用场景:咱们要修改以前某一个特定的commit的时候,就须要用到这个命令。git

假如以前的某个提交的上一笔commit id是:928fc8a3686bf5fcf4527873e075703a9998c127bash

git log #查看commit id 找到上一笔commit id git rebase 928fc8a3686bf5fcf4527873e075703a9998c127 --interactive或者-i
//注意,必定要上一笔,为何呢?实际上rebase翻译过来就是变基,简而言之,就是变动为基于哪一笔提交上的提交, 这里指的“哪一笔”就是须要修改的提交的上一笔了。

而后在vi中修改pick为edit,wq保存退出,接着进行内容修改,git addgit commit --amend
最后git rebase --continue便可再次回到最新的头部ui

//git rebase --continue 做为整个操做的结束动做,因此必定要执行。spa

 

接下来看下一些具体场景:翻译

1.有的时候,咱们从远程git同步代码时候会有如下信息:code

 上传新提交的时候,也会由于这笔记录的格式问题报错,blog

 

此时用git rebase 92320630cbf41f656361271110c6fc1298b1ec19 -i,而后不作任何修改,wq保存退出,这笔merge信息就没有了。个人理解是跟不加参数-i是同样的。ip

2.当执行git rebase 92320630cbf41f656361271110c6fc1298b1ec19 -i 后有多笔提交的时候,同步

如:it

pick xxxxxx

pick xxxxxx

pick xxxxxx

能够删除不相关的几笔提交,只留下要修改的那笔pick xxxxxx, 这样的作的好处,就是git commit 以后,进行repo upload 的时候,不会出现其余几笔提交也从新上传一次。个人理解是若是多个pick, 那么这几笔都从新rebase到了须要的修改的上一笔提交上。

若是只剩下须要修改的那一笔,那么只是对须要修改的那一笔进行rebase。

3. 若是中途出错,可使用git rebase --skip 来重置

相关文章
相关标签/搜索