zoukankan      html  css  js  c++  java
  • git rebase 的妙用

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

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

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

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

    //git rebase --continue 作为整个操作的结束动作,所以一定要执行。

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

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

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

     

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

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

    如:

    pick xxxxxx

    pick xxxxxx

    pick xxxxxx

    可以删除不相关的几笔提交,只留下要修改的那笔pick xxxxxx, 这样的做的好处,就是git commit 之后,进行repo upload 的时候,不会出现其他几笔提交也重新上传一次。我的理解是如果多个pick, 那么这几笔都重新rebase到了需要的修改的上一笔提交上。

    如果只剩下需要修改的那一笔,那么只是对需要修改的那一笔进行rebase。

    3. 如果中途出错,可以使用git rebase --skip 来重置

  • 相关阅读:
    C# Linq 交集、并集、差集、去重
    SpringICO和DI区别
    postman调用webapi错误记录
    NetCore实例提供的依赖注入的生命周期
    ios处理暴力输出问题
    一块国外开源的视频播发器
    一个有创意的3D APP
    Flurry Analytics最近免费添加了获取新用户分析和app崩溃报告的功能
    那些域名服务商
    Moneybookers的优点
  • 原文地址:https://www.cnblogs.com/rainey-forrest/p/11232543.html
Copyright © 2011-2022 走看看