Git学习第二天
工作区与暂存区
工作区(Working Directory)
工作区就是电脑里能看到的目录,比如git文件夹就是一个工作区版本库(Repository)
工作区有一个隐藏目录.git
,这个不是工作区,是Git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage
(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master的一个指针叫HEAD
。
管理修改
git add
命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到分支。
第一次修改 =>git add
=> 第二次修改 =>git add
=>git commit
可以把两次修改合并后一次提交.每次修改后,如果不add到暂存区,那就不会加入到commit中。
撤销修改
git checkout -- file
可以丢弃工作区的修改:
$ git checkout -- readme.txt
命令git checkout -- readme.txt
意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令。
根据提示用命令git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。git checkout -- readme.txt
,执行后则丢弃工作区的修改
小结
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD file
,就回到了场景1,第二步按场景1操作。场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
一般情况下,直接用rm命令直接在文件管理器中把没用的文件删除
$ rm test.txt
可用git status
命令查看哪些文件被删除了
1.如果提交到了版本库,直接从硬盘上删除后发现删错了,可以用git checkout -- file命令轻松恢复到最新版本
$ git checkout -- test.txt
2.如果确定要从版本库中删除文件,那就用命令
git rm
删掉,并且git commit
,这样文件就从版本库中删除了。
小结
命令
git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
整理自廖雪峰Git教程: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000