1、git diff命令,查看工作区和暂存区的区别
例子:在一个文件夹下创建一个git仓库,新建一个hello文件并提交到暂存区,执行git diff命令,发现并无任何输出。再修改工作区的hello的内容保存并退出,执行git diff命令,发现系统给出提示。
$ git touch hello
$ git add hello
$ git diff
修改文件内容,保存退出
$ vim hello
执行git diff
$ git diff
diff --git a/hello b/hello
index e69de29..ce01362 100644
--- a/hello
+++ b/hello
@@ -0,0 +1 @@
+hello
warning: LF will be replaced by CRLF in hello.
The file will have its original line endings in your working directory.
结果输出了暂存区和工作区的区别(
是被追踪文件的区别,即被git add的文件的区别)
2、git diff --cached或者git diff --staged,查看暂存区和上次提交到版本库的区别
接着上面的执行git diff--cached命令,发现系统给出暂存区和版本库的不同之处提示,接着执行git commit -m 'create hello file'(create hello file为提交的描述,可由自己填写)命令,将暂存区的内容提交到版本库中,再执行git diff --cached,发现控制台并无输出,因为最新的一次提交与暂存区的内容完全一致
$ git diff --staged
diff --git a/hello b/hello
new file mode 100644
index 0000000..ce01362
--- /dev/null
+++ b/hello
@@ -0,0 +1 @@
+hello
$ git commit -m 'create hello file'
$ git diff --cached
3、git diff HEAD命令比较 工作区和 版本库的区别
此时执行git diff HEAD控制台不会输出任何东西,因为工作区的内容和版本库的一样。我向hello文件写入“word”,再执行git diff HEAD,此时控制台给出提示。
修改hello文件,再其内容后加上" world",保存并退出
$ git diff HEAD
$ vi hello
执行git diff HEAD命令
$ git diff HEAD
diff --git a/hello b/hello
index ce01362..3b18e51 100644
--- a/hello
+++ b/hello
@@ -1 +1 @@
-hello
+hello world
warning: LF will be replaced by CRLF in hello.
The file will have its original line endings in your working directory.
二、git commit
用于将暂存区中的内容写入到git仓库中
三、git reset HEAD
取消已提交的缓存内容
接着上面的,执行git status -s(这与git status命令是一样的,只是这个的输出更加的简介)命令
$ git status -s
M hello
控制台输出的是" M hello",注意M(修改的意思)之前还有一个空格,前一个空格的字母是表示
暂存区和
版本库的不同,后一个空格的字母表示为
工作区和
暂存区之间的不同,当为空时说明两者没有什么不同。
$ git add hello
$ git status -s
M hello
此时M的位置变为第一个了,说明
工作区和
暂存区没有区别,现在执行git reset HEAD -- head
$ git reset HEAD -- hello
Unstaged changes after reset:
M hello
$ git status -s
M hello
现在撤销了缓存M又回到了第二个位置
将条目从缓存区中删除,这与 git reset HEAD 将条目取消缓存是有区别的。 "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。
git rm -f file:将file文件从工作区和暂存区中删除
$ git rm -f filename
git rm --cached file: 将文件从暂存区删除但不会将工作区的文件删除
五、git mv
相当于这三条指令,将文件从缓存中删除,重命名该文件,将重命名后的文件提交到缓存区中
$ git rm --cached file
$ git mv file f
$ git add f