工作区就是实实在在地存储着文件的位置,比方说我的笔记本的“C:/project/git_test“文件夹。
暂存区(stage)则是git add和git commit之间的一个缓存区。需要提交的文件修改统统放到暂存区,然后一次性提交暂存区的所有修改。之前所提到过的git status命令就是用来查看暂存区内容的。
我们把文件往git版本库里添加修改的时候,分两步执行:
第一步用git add把文件添加进去,实际上就是把文件修改添加到暂存区,这一步称为stage;
第二步是用git commit提交更改,实际就是把暂存区的所有内容提交到当前分支。
我们创建git版本库时git自动为我们创建了唯一一个master分支,所以现在git commit就是往master分支上提交更改。
如何撤销修改:
撤销工作区内的对某个文件的修改(这个修改还没add到暂存区):
git checkout -- <file> //file为文件名
撤销暂存区内的对某个文件的修改(unstage),把修改重新放回到工作区:
git reset HEAD <file> //file为文件名
总结:
SCENE1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
SCENE2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
SCENE3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本切换一节,不过前提是没有推送到远程库。