• 谈谈对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 来恢复

  • 相关阅读:
    linux下安装jdk1.8
    在eclipse里面启动tomcat服务器时报错Server Tomcat v7.0 Server at localhost failed to start.
    frame使关闭口生效
    web.xml配置错误处理节点
    mac下修改mysql默认字符集为utf8
    Centos6.5关闭防火墙命令
    mysql修改
    java错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build
    完美解决Linux服务器tomcat开机自启动问题
    MAC 查看java home目录
  • 原文地址:https://www.cnblogs.com/lyjfight/p/15748821.html
Copyright © 2020-2023  润新知