zoukankan      html  css  js  c++  java
  • git高级浅入之当我们需要修改某次commit信息

    这节内容主要谈两个比较常见的操作,去修复我们需要修改的commit信息。

    有时候,我们会发现我们所提交的信息可能写错了,需要修改怎么办?这种情况主要分为以下两种:

    • 修改最近一次的提交信息
    • 修改指定的某一次提交信息

    1. 使用git commit amend修改最近一次的提交信息

    git初级浅入的那一章有简单的谈到这一操作,今天我们再来讨论一下。

    git commit --amend 更改最近一次提交的信息,这个操作就优秀了,目前我发现的大致是以下两个用处

    • 1.比如我上一次提交的是修改了某个bug,这一次我又是修改了那个bug,然后我要将这一次的修改和上一次的提交用同一个commit备注,那么你可以使用这个命令,将会使用上一次的commit备注信息,同时生成一个新的commitId,
    • 2.你想把本次的修改提交到上一次的提交中,并且把上一次备注的提交信息改成这次的

    实际实践一下看看:我们先新建一个仓库,然后创建个test.js文件,然后commit一下,然后我们要修改这一次commit的信息。
    我们先git log当前状态如下

    然后git commit --amend进入编辑

    我们修改上一次提交信息,把它改成 [fix]: try git commit --amend,然后保存退出,git log看一下

    我们观察上述结果,发现已经将上一次的提交信息给更改为我们想要修改的内容了,并且我们会发现,当前commit已经合并了上一次commit生成了新的id。

    那么,我们需要修改的commit信息不是最近一次的咋办?

    2. 使用git rebase -i 来修改某一次的提交信息

    2.1 先铺垫下知识点

    git rebase -i master^^    // 假设我们当前在master分支
    
    

    上面两个^是什么鬼?上述操作在分支名后总共可以放两个字符,一个是一个是~,具体规则如下

    • ^ 的用法:在 commit 的后面加一个或多个 ^ 号,可以把 commit 往回偏移,偏移的数量是 ^ 的数量。例如:master^^表示 当前master 指向的 commit 之前倒数第2个 commit
    • ~ 的用法:在 commit 的后面加上 ~ 号和一个数,可以把 commit 往回偏移,偏移的数量是 ~ 号后面的数。例如:master~2 表示的和master^^是一样操作。

    2.2说一点点我们就可以在实践上理解一下了

    2.2.1 我们依然是从头开始(避免理解乱套),新建一个仓库,新建一个文件test.js,然后提交个4次,如下图

    2.2.2 ok!准备工作完毕后,我们就来改下倒数第二个提交信息‘[feat]: add b’,将它改为'[fix]: try git rebase -i master^^ '。

    git rebase -i master^^
    

    2.2.3 输入上面命令,进入如下

    2.3.4 接下来可以操作的命令都在上图中显示了,我们要做的是编辑,并且要编辑的是第一行(它的排列顺序是一个正序排序,也就是说旧的commit信息在上面,新的commit在下面),我们将pick改为edit,vim操作大概是输入i -> 将pick改为edit -> esc -> :wq

    2.3.5 然后退出保存后,显示如下

    git commit --amend
    

    2.3.6 输入如上命令,我们就可以去修改倒数第二个提交信息了

    等会!等会!上面命令不是我们上面修改最后一次commit的信息的操作吗?对,没错,那么我们思考下刚刚我们操作是干了什么?其实,我们刚刚使用rebase将最新一次的commit基准定到了倒数第二个。那我们输入完上面命令后看看效果。

    2.3.7 然后操作和第一个操作一样

    2.3.8 改完信息后,我们还需要git rebase --continue,将基准从当前倒数第二位置移到最新一次提交

    2.3.9 git log看下状态

    看上图,我们会发现我们已经将倒数第二次的提交信息给改了

    2.3 接下来通过动图看看,刚刚操作干了什么

    git amend -i master^^的时候,它做了这样一件事情

    然后git commit --amend和git rebase continue的时候,它干了这样一件事情

    2.4 小结

    从宏观上来说分为三步,1.git rebase -i 分支~移动数字 2. 选择对应操作 3.git commit --amend和git rebase continue

  • 相关阅读:
    DHCP服务的配置(linux)
    LVM逻辑卷
    python的元素列表
    DOS和DDOS你知道多少?
    DOS与DDOS攻击的原理与防范之法
    常见HTTP状态代码,http报错代码翻译
    TCP和UDP优缺点
    DLL何时需共享内存管理器
    Delphi 指针大全
    Delphi编写DLL(以及静态和动态方式调用)
  • 原文地址:https://www.cnblogs.com/fe-linjin/p/10814935.html
Copyright © 2011-2022 走看看