状态查看: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>
将暂存区的内容提交到本地库