• git 修改 Commit Message


    修改 Commit Message

    本文源自极客时间 《go 语言项目开发实战 孔令飞》

    本文是 rebase 命令的一个使用场景,关于rebase命令,可以参考这篇:git rebase 命令介绍

    即使我们有了 Commit Message 规范,但仍然可能会遇到提交的 Commit Message 不符合规范的情况,这个时候就需要我们能够修改之前某次 commit 的 Commit Message。

    具体来说,我们有两种修改方法,分别对应两种不同情况:

    1. git commit --amend:修改最近一次 commit 的 message;
    2. git rebase -i:修改某次 commit 的 message。

    接下来,我们分别来说这两种方法。

    git commit --amend:修改最近一次 commit 的 message

    有时候,我们刚提交完一个 commit,但是发现 commit 的描述不符合规范或者需要纠正,这时候,我们可以通过 git commit --amend 命令来修改刚刚提交 commit 的 Commit Message。具体修改步骤如下:

    1.查看当前分支的日志记录。

    $ git log –oneline
    418bd4 docs(docs): append test line 'update$i' to README.md
    89651d4 docs(doc): add README.md
    

    可以看到,最近一次的 Commit Message 是 docs(docs): append test line 'update$i' to README.md,其中 update$i 正常应该是 update1。

    2.更新最近一次提交的 Commit Message

    在当前 Git 仓库下执行命令:git commit --amend,后会进入一个交互界面,在交互界面中,修改最近一次的 Commit Message,如下图所示:
    image

    修改完成后执行:wq 保存,退出编辑器之后,会在命令行显示,该 commit 的 message 的更新结果如下:

    [master 55892fa] docs(docs): append test line 'update1' to README.md
     Date: Fri Sep 18 13:40:42 2020 +0800
     1 file changed, 1 insertion(+)
    

    3.查看最近一次的 Commit Message 是否被更新

    $ git log --oneline
    55892fa docs(docs): append test line 'update1' to README.md
    89651d4 docs(doc): add README.md
    

    可以看到最近一次 commit 的 message 成功被修改为期望的内容。

    git rebase -i:修改某次 commit 的 message

    如果我们想修改的 Commit Message 不是最近一次的 Commit Message,可以通过 git rebase -i <父 commit ID>命令来修改。这个命令在实际开发中使用频率比较高,我们一定要掌握。具体来说,使用它主要分为 4 步。

    1.查看当前分支的日志记录。

    $ git log --oneline
    1d6289f docs(docs): append test line 'update3' to README.md
    a38f808 docs(docs): append test line 'update$i' to README.md
    55892fa docs(docs): append test line 'update1' to README.md
    89651d4 docs(doc): add README.md
    

    可以看到倒数第 3 次提交的 Commit Message 是:docs(docs): append test line 'update$i' to README.md,其中 update$i 正常应该是 update2。

    2.修改倒数第 3 次提交 commit 的 message。

    在 Git 仓库下直接执行命令 git rebase -i 55892fa,然后会进入一个交互界面。在交互界面中,修改最近一次的 Commit Message。这里我们使用 reword 或者 r,保留倒数第 3 次的变更信息,但是修改其 message,如下图所示:
    image

    修改完成后执行:wq 保存,还会跳转到一个新的交互页面,如下图所示:
    image

    修改完成后执行:wq 保存,退出编辑器之后,会在命令行显示该 commit 的 message 的更新结果:

    [detached HEAD 5a26aa2] docs(docs): append test line 'update2' to README.md
     Date: Fri Sep 18 13:45:54 2020 +0800
     1 file changed, 1 insertion(+)
    Successfully rebased and updated refs/heads/master.
    

    Successfully rebased and updated refs/heads/master.说明 rebase 成功,其实这里完成了两个步骤:更新 message,更新该 commit 的 HEAD 指针。

    注意:这里一定要传入想要变更 Commit Message 的父 commit ID:git rebase -i <父 commit ID>。

    3.查看倒数第 3 次 commit 的 message 是否被更新。

    $ git log --oneline
    7157e9e docs(docs): append test line 'update3' to README.md
    5a26aa2 docs(docs): append test line 'update2' to README.md
    55892fa docs(docs): append test line 'update1' to README.md
    89651d4 docs(doc): add README.md
    

    可以看到,倒数第 3 次 commit 的 message 成功被修改为期望的内容。

    这里有两点需要你注意:

    • Commit Message 是 commit 数据结构中的一个属性,如果 Commit Message 有变更,则 commit ID 一定会变,git commit --amend 只会变更最近一次的 commit ID,但是 git rebase -i 会变更父 commit ID 之后所有提交的 commit ID。
    • 如果当前分支有未 commit 的代码,需要先执行 git stash 将工作状态进行暂存,当修改完成后再执行 git stash pop 恢复之前的工作状态。
  • 相关阅读:
    131. 分割回文串
    博客开通第二十七天
    博客开通第三十八天
    博客开通第56天
    博客开通第三十三天
    博客开通第61天
    博客开通第62天
    博客开通第二十六天
    博客开通第四十七天
    博客开通第63天
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/15394612.html
Copyright © 2020-2023  润新知