[Git] 008 status 与 commit 命令的补充

本文的“剧情”承接 [Git] 007 三棵树以及向本地仓库加入第一个文件

1. 对 "status" 的补充

1.1 "status" 有个参数 "-s"

  • 命令:git status -s

[Git] 008 status 与 commit 命令的补充


  • 没有消息使最好的消息

1.2 比较

  • git status -s 显示的信息比 git status 简洁

[Git] 008 status 与 commit 命令的补充


1.3 不妨再添加一个文件

[Git] 008 status 与 commit 命令的补充


1.4 往 "note_01.txt" 中写入文本

[Git] 008 status 与 commit 命令的补充


1.5 查看

[Git] 008 status 与 commit 命令的补充

  • 第 3 行开头红色的 "??" 说明 "note_01.txt" 还没有进行过 "add" 或 "commit" 操作

1.6 将 "note_01.txt" 加入暂存区后再查看

[Git] 008 status 与 commit 命令的补充

  • 第 5 行开头绿色的 "A",说明 "note_01.txt" 已经被加到暂存区了

1.7 继续往 "note_01.txt" 中添加文本

[Git] 008 status 与 commit 命令的补充


1.8 再查看一下

[Git] 008 status 与 commit 命令的补充

  • 第 3 行开头有绿色的 "A" 与红色的 "M"
    • 绿色的 "A" 说明 "note_01.txt" 已经被加到暂存区了
    • 红色的 "M" 说明工作区的 "note_01.txt" 又做了修改,与暂存区的 "note_01.txt" 不同了

2. 对 "commit" 的补充

2.1 "commit" 有个参数 "-m"

  • git commit -m "<message>"

[Git] 008 status 与 commit 命令的补充


  • 知识点
    • 有些版本用 git commit 跳转,使用 "vi / vim" 编辑后,中文部分可能会乱码
    • 使用 git commit -m "<message>" 可以避免乱码

2.2 查看

[Git] 008 status 与 commit 命令的补充


分析

  • 此时加入本地仓库的是暂存区的 "note_01.txt"
  • 第 3 行的 "M" 前预留了一个位置;对比 "1.8" 的图,这个位置使留给 "A" 的

2.3 添加 & 提交

  • 因为工作区的 "note_01.txt" 有了变动,所以在“添加 & 提交”一次
  • 提交过的文件,可以使用 git commit -am 命令
    • "-am" 的 "a" 是 "all" 的意思
    • 之前没有 "add"、"commit" 的文件不能用

[Git] 008 status 与 commit 命令的补充


2.4 提问时间

  • 只做了一个很小的变动,不想 "commit" 怎么操作?

2.4.1 方法一

  • 使用 git commit --amend
  • 此法可以把后一次提交并入前一次
    • 但纪录中仍有两条
    • 证据:"commit" 的次数不变,但哈希值会变

在之前的基础上加入一句'4. git commit -m "<message>" 加入仓库'

[Git] 008 status 与 commit 命令的补充


$ git commit --amend

[Git] 008 status 与 commit 命令的补充


[Git] 008 status 与 commit 命令的补充


2.4.2 方法二

  • 方法二是方法一的进阶版
  • 使用:git commit --amend --no-edit

  • 此法可以把后一次提交并入前一次,并且可以不写“注释”
    • 但纪录中仍有两条
    • 证据:"commit" 的次数不变,但哈希值会变
  • 同方法一,这里犯了个错误:我 "commit" 之前忘记 "add" 了;成功版见 [Git] 010 对 [Git 008] 的补充:实现 commit 不计次数

[Git] 008 status 与 commit 命令的补充


2.5 有参数可以在第一次 "commit" 时不写“注释”

  • 挖个坑,日后填平
  • 坑号编码:Git08-1