• Git rebase日志


    Git日志重写

    为了方便管理,最近公司git接了jira,然后开发任务需要在jira上面先建立task,然后再task上面建立分支,后面该分支就和这个task进行了绑定。

    因为之前一直使用传统的svn,git用的还不熟练,出现过几次比较蠢的失误。

    如果git commit的时候没有在 message的内容前面部分填写分支的编号比如:feature-101 叫xxxx逻辑。使用git push会出现提交不上去的情况,这个时候根据git的提示信息会让你重新填写提交日志,于是乎我就傻傻的又commit了一次,然后还是相同的问题,因为之前那一次的提交日志并没有修改。

    git的commit,在本地提交历史中会有每一次的提交的记录,需要所有的记录全部符合条件,git push的时候才可以将内容提交到远程库中。

     

    如果是第一次提示日志有问题,那么可以使用:

    git commit --amend
    

    随后进入文本编辑器,里面是最近一次提交说明。当你保存并退出编辑器,这个编辑器会写入一个新的提交,里面包含了那个说明,并且让它成为你的新的最近一次提交。

     要修改历史中更早的提交,你必须采用更复杂的工具。

    Git没有一个修改历史的工具,但是你可以使用rebase工具来衍合一系列的提交到它们原来所在的HEAD上而不是移到新的上。

    依靠这个交互式的rebase工具,你就可以停留在每一次提交后,如果你想修改或改变说明、增加文件或任何其他事情。

    你可以通过给git rebase增加-i选项来以交互方式地运行rebase。你必须通过告诉命令衍合到哪次提交,来指明你需要重写的提交的回溯深度。

    例如,你想修改最近三次的提交说明,或者其中任意一次,你必须给git rebase -i提供一个参数,指明你想要修改的提交的父提交,例如HEAD~2或者HEAD~3

    可能记住~3更加容易,因为你想修改最近三次提交;但是请记住你事实上所指的是四次提交之前,即你想修改的提交的父提交。

     你需要修改这个脚本来让它停留在你想修改的变更上。要做到这一点,你只要将你想修改的每一次提交前面的pick改为edit。例如,只想修改第三次提交说明的话,你就像下面这样修改文件:

    pick f7f3f6d changed my name a bit
    
    pick 310154e updated README formatting and added blame
    
    pick a5f4a0d added cat-file
    
     
    
    # Rebase 710f0f8..a5f4a0d onto 710f0f8
    
    #
    
    # Commands:
    
    #  p, pick = use commit
    
    #  e, edit = use commit, but stop for amending
    
    #  s, squash = use commit, but meld into previous commit
    
    #
    
    # If you remove a line here THAT COMMIT WILL BE LOST.
    
    # However, if you remove everything, the rebase will be aborted.

    当你保存并退出编辑器,Git会倒回至列表中的最后一次提交,然后把你送到命令行中,同时显示以下信息:

    $ git rebase -i HEAD~3
    
    Stopped at 7482e0d... updated the gemspec to hopefully work better
    
    You can amend the commit now, with
    
    
           git commit --amend
    
    Once you’re satisfied with your changes, run
    
    
           git rebase --continue

    这些指示很明确地告诉了你该干什么。输入

    $ git commit --amend

    修改提交说明,退出编辑器。然后,运行

    $ git rebase --continue

    这个命令会自动应用其他两次提交,你就完成任务了。如果你将更多行的 pick 改为 edit ,你就能对你想修改的提交重复这些步骤。Git每次都会停下,让你修正提交,完成后继续运行。

     

  • 相关阅读:
    大战设计模式【5】—— 工厂方法模式
    通过spring抽象路由数据源+MyBatis拦截器实现数据库自动读写分离
    大战设计模式【4】—— 简单工厂模式
    大战设计模式【3】—— 装饰模式
    大战设计模式【2】—— 观察者模式
    大战设计模式【1】—— 策略模式
    回顾:maven配置和常用命令整理
    idea properties文件unicode码问题
    Nginx学习笔记
    tomcat添加context方式部署web应用
  • 原文地址:https://www.cnblogs.com/congsg2016/p/5455063.html
Copyright © 2020-2023  润新知