Git 基础(2)| 如何修改上一次的提交?

Git 基础(2)| 如何变动已经修改上一次提交?

目录

1、撤销操作

在任何一个阶段,你都有可能想要撤消某些操作。有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令来重新提交:

--amend 作用

  • 自动的将目前已放入暂存区文件中的数据提交
  • 如果提交信息不够充分,可以通过--amend进行补救

假设:你现在创建了三个文件,其中有两个文件已经放入了暂存区

[~/02_git_space/git-learn]$ git status                                                             *[master]
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   a.txt
        new file:   b.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        c.txt

[~/02_git_space/git-learn]$

但是你现在误以为c.txt也已经纳入了版本管理

所以你直接运行如下命令:

[~/02_git_space/git-learn]$ git commit -am "fix:提交所有txt文件"                                   *[master]
[master b192e13] fix:提交所有txt文件
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt
 create mode 100644 b.txt
[~/02_git_space/git-learn]$   

之后悲剧发生了,正如你所看到的,却提交了两个文件,并非预想的这一次提交将三个文件都会提交上去,那怎么办呢?

此时就需要--amend来帮你解决这个问题啦~,步骤如下:

  1. c.txt先放入暂存区(只有放入暂存区的文件,--amend才会自动帮你补录到上次的提交中)
  2. 修改提交信息(把遗忘提交的文件描述清楚)
[~/02_git_space/git-learn]$ git add c.txt                                                          *[master]
[~/02_git_space/git-learn]$ git status                                                             *[master]
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   c.txt

[~/02_git_space/git-learn]$ git commit --amend

执行git commit --amend后,会打开默认的编辑页面如下:

fix:提交所有txt文件
(补录c.txt,到本次提交中) # 该内容为之后的补录描述

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Sun Feb 27 20:28:51 2022 +0800
#
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#       new file:   a.txt
#       new file:   b.txt
#       new file:   c.txt
#
-- INSERT --

编辑后保存会覆盖原来的提交信息并显示如下:

[~/02_git_space/git-learn]$ git commit --amend                                                     *[master]
[master fb44c5f] fix:提交所有txt文件 (补录c.txt,到本次提交中)
 Date: Sun Feb 27 20:28:51 2022 +0800
 3 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt
 create mode 100644 b.txt
 create mode 100644 c.txt
[~/02_git_space/git-learn]$ 

之后调用git log --stat ,显示如下:

commit fb44c5f908e831b55845a7d53f3296cb6f4c12ee (HEAD -> master)
Author: lishanbiao <1336503209@qq.com>
Date:   Sun Feb 27 20:28:51 2022 +0800

    fix:提交所有txt文件
    (补录c.txt,到本次提交中)

 a.txt | 0
 b.txt | 0
 c.txt | 0
 3 files changed, 0 insertions(+), 0 deletions(-)

commit 570e628d2c85c18ebc6f645fcad696d598992f6a (origin/master, origin/HEAD)
Author: lishanbiao <lishanbiao111@sina.com>
Date:   Sat Feb 26 20:56:34 2022 +0800

这说明,已经将c.txt补录到了上一次的提交中,并改变了上一次提交的描述

至此为你的马虎提交矫正成功!

上一篇:Hackthebox-love靶机实战


下一篇:MPLS+BGP+静态引入CE路由的双层标签详解