git checkout reset 傻傻分不清楚

最近在使用GitLab进行代码管理,在用命令行使用git的过程中遇到了一个问题,以下是本人做实验过程,希望可以将两个命令的关系整理清楚:

先是建立了一个专门用来测试的文件夹:
mkdir test_dir
进入文件夹:
cd test_dir

新建一个git管理仓库:
git init
在当前文件夹下新建一个文本进行实验:
vi git_doc
进入vi,点I进行代码插入,并写下一行字:
this is a test for git command!
按ESC键,输入冒号后,wq保存;

这个时候重点来了,我们要先把这个版本提交:
git commit -m "origin version"
接着来修改文件,再次vi进入:
vi git_doc
添加一行:
add some words for testing!
查看一下当前状态:
git status
此时显示:
这里写图片描述
可以看到现在显示的修改是红色的,指的是代码还没有被添加到暂存区(具体暂存区是什么,工作区是什么,自己去看一下吧,不解释了),那么我们现在满足你,给你放到暂存区里:
git add .
(注意上面这个点啊,是指当前目录下的所有文件!)
接下来查看:
git status
此时显示:
这里写图片描述
变绿了,有木有?

然后我们要说本篇重点了,如果这个时候你发现你新加的那一行字add some words for testing!不想要了,怎么办?
提示写的很清楚不是么,这个时候我们用:
git reset HEAD .
则可以返回到红色的那张图的状态;但是如果你是用:
git checkout -- .
则不会起任何作用;

所以我们自然是快乐的使用上面的reset啦:
git reset HEAD .
这个时候就回到了红色状态,不过这个时候你修改的文件里还是有那一行字对不对;接着因为我们状态已经变红,接下来继续:
git checkout -- .

好吧,这时我们就可以再vi打开文件看一下了,发现只剩下一行了是不是,所以,这两个命令的关系也就明了了,实验结束,本篇完。

猜你喜欢

转载自blog.csdn.net/jianin45/article/details/77374461