git工作区,暂存区,版本库之间的关系:
我们建立的项目文件夹就是工作区,在初始化git(git init)版本库之后会生成一个 .git文件,可以将该文件理解成git的版本库repository,.git文件里面还有很多文件其中有一个index文件就是缓存区也叫stage,git还自动生成一个分支master,及指向该分支的指针head。
(.命名开头的文件是不可见文件,如果想要显示文件,需要设置:打开计算机->组织->文件夹和搜索选项->查看->高级设置->显示隐藏的文件、文件夹、驱动器->确定,设置之后就可见了。)
git status 查看workspace的工作状态,看文件有没有被git追踪,会提示通过git add 把文件添加到缓存区。如果添加到缓存区,这时的跟新只在wokspace中,通过git commit -m "" (-m后面是commit的描述),这时的跟新已经从stage保存到repository区中。这样文件就成功的添加到仓库中了。
如果文件被修改,跟新只在workspace中,不会到缓存区,必须通过git add,git commit命令,到缓存区再到repository中。(注意:只有到缓存区后才能到repository中)
撤销跟新:
跟新可能存在的3个地方:workspace,stage,repository,如何撤销跟新
1.撤销workspace中的跟新
通过 git checkout -- 来撤销。如:在index.html文件中添加
2.撤销stage中的跟新
通过 git reset HEAD 把缓存区的跟新移除。上一步的例子中没有添加到缓存区,现在重新添加
3.撤销repository中的跟新
撤销之前,先通过git log 命令查看一下commit提交的历史记录.
撤销提交的两种方式:使用HEAD 指针和commit id
当前版本使用"HEAD^",再前一个使用HEAD ^^,回退到更早的版本,使用HEAD~n,即 git reset --hard "HEAD ^" 或 git reset --ee741efghjkoi986544th,再执行git log后发现commit就改变了。注意此时:workspace中的index.html文件也