zoukankan      html  css  js  c++  java
  • 谈谈对git rebase的理解

    gIt rebase 的三种作用

    1.拉代码rebase

    2.合并分支rebase

    3.处理commit提交记录

    1.拉取代码rebase

    正常我们在拉取远程代码时使用 git pull

    git pull === git fetch + giet merge 是使用fast-forwad模式,如果出现冲突后,解决冲突且重新提交记录,则会出现分支错乱的问题,

    输入命令查看log记录  git log --graph --pretty=oneline --abbrev-commit

    强迫症的同学一定会受不了,因此出现git pull --rebase

    git pull --rebase === get fetch + git rebase

    如上图,当使用git pull --rebase 出现冲突

     

    则先解决冲突后 再

    git add .

    git rebase --continue

    此刻,当前commit提交记录就变成一条线了。注意之后若重新提交则需要 git push -f  即为强制提交替换远程commit记录。

    2.合并分支rebase

    当你接到需求后从master分支切出dev分支,然后dev分支开发完成后需要先切回master分支,git pull --rebase 拉取最新的代码,再切回dev分支,这时候你需要先合并master的最新代码,正常git merge 后会出现commit提交错乱,如下图

    这样就会让人感觉强迫症犯了。

    因此,我们可以是用git rebase来合并,如上述,不使用git merge master, 使用git rebase master 后记录如下图

    可以看到,master和dev将基线以后的commit进行了排序,变基的dev分支在前面,合并的master修改commit再后。 最后提交git push -f。 注意需要需要强制提交,因为变基后的dev和远程的dev commit记录顺序不一致。

    3.处理commit提交记录

    当我们需要处理commit记录时, 可以使用git rebase -i对分支记录操作, 常见的如删除,合并多个commit

    执行git rebase -i head~3, 即前三次提交记录,如下图,执行后进入vim编辑器,将对应的commit前面的pick改为drop即为删除,squash为合并。

    当使用git rebase -i修改后发现修改内容有误,想恢复修改之前的可以 执行 git rebase --abort 来恢复

  • 相关阅读:
    截取最后一个下划线前面的字符串
    jqgrid加载本地数据功能
    Android、Ios手机端字体根据屏幕分辨率自适应的方法,使用rem和px的区别
    js获取8个月前时间,1天前时间
    手机端/pc端 弹出后,禁止底部页面滚动方法
    列表左右滚动
    jQuery点击隐藏点击显示,计算高度,位置,给当前加上焦点,其他去掉焦点
    工厂模式浅析
    教你看懂UML类图
    Rpc基础篇
  • 原文地址:https://www.cnblogs.com/lyjfight/p/15748821.html
Copyright © 2011-2022 走看看