状态查看git status

查看工作区、暂存区状态

用vim编辑器随便新建个文件:
在vim编辑器里按i插入文本,按Esc退出,输入:wq回车即保存并退出

结果:

可以看到新建了个1.txt文件
然后在用git status

可以看到有一个“Untracked files”,并且提示你用git add添加到暂存区


添加git add <file>

接上文,继续git add 1.txt可得到:

这有一个warning,意思是add到暂存区的文件中,行末换行符会由LF转换为CRLF,而工作区的仍是LF。行末换行符是文件底层自动加的。
这里没什么影响。
再来看一下git status

字变成绿色了,不像红色那么引人注意了,说明文件已保存到了暂存区,有了一定的安全性。
这里有句提示

use git rm --cached <file>... to unstage

意思是告诉你可以执行这个命令把它移出暂存区,移回工作区:


提交git commit <file>

新建文件后的提交

接上文,git add之后git commit 1.txt会进入到这个界面:

这是vim编辑器,在这里输入本次提交的注释。
输入:set nu回车,显示行号:

按i键输入文本,然后Ecs键退出,最后输入:wq回车提交:


我们来看这3行:

[master (root-commit) de4a738] first commit new file 1.txt
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt

master (root-commit):表示在master分支的根提交
de4a738:现在不太方便解释,姑且可以认为是这次提交的版本号
first commit new file 1.txt:就是我们刚刚在vim编辑器里写的注释
1 file changed, 1 insertion(+):1个文件被修改,这个文件里增加了1行文字
create mode 100644 1.txt:100代表regular file,644代表文件权限

git commit之后再来看一下git status

这样一来暂存区和工作区都是干净的。

修改文件后的提交

接下来我们再用vim 1.txt进入1.txt文件编辑界面,增加几行文字:

然后:wq保存,再查看以下git status

还是红字,但是提示的是modified,表示文件被修改过。
并且括号中提示:

(use "git add <file>..." to update what will be committed)

对比之前新建文件时的提示消息:

(use "git add <file>..." to include in what will be committed)

一个是“include”,一个是“update”,很明显能体会到两者的区别。

接下来看这个:

(use "git restore <file>..." to discard changes in working directory)

意思是可以用git restore <file>...命令放弃修改,之后再细说。

最后看这个:

(use "git add" and/or "git commit -a")

“and/or”的意思就是可以先add然后commit,也可以不add直接commit
和之前新建文件时比较:

(use "git add" to track)

我们git add 1.txt之后再查看git status

这里提示变为了

(use "git restore --staged <file>..." to unstage)

意思是这次得用git restore --staged <file>...把1.txt移出暂存区,移回工作区,而不是新建文件时的git rm --cached <file>...

然后是提交,可以和之前一样使用git commit 1.txt,但是那样会打开vim编辑器,让你输入本次提交的注释,那样比较麻烦。我们可以用git commit -m "注释内容" 1.txt直接提交:

对比新建文件的提交:

[master (root-commit) de4a738] first commit new file 1.txt
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt

可以看到这次少了[master (root-commit) de4a738] first commit new file 1.txt一行,因为根提交只能有一个
3 insertions(+),表示修改了文件中增加了3行


小结

  • 查看:git status
    查看工作区、暂存区的状态

  • 添加:git add <file>
    将工作区的“新建/修改”添加到暂存区
    新建的文件commit之前必须add;而修改的文件(已经add过)可以直接commit,但这样就无法撤销了

  • 提交:git commit -m "commit message" <file>
    将暂存区的内容提交到本地库