git
新建git本地仓库
git init
:新建一个.git文件,有这个文件就是一个git仓库
git本地仓库
分三个区来区别操作:
- 工作区: 就是一个多了.git文件的文件夹,不要想太多,就按Linux操作文件夹的方法正常操作
- 暂存区: 暂时讲两种操作暂存区的方法:
- 存入暂存区:
git add filename
和git rm filename
这两条都是修改暂存区 - 递交暂存区:
git commit -m "log"
正常来说一般对暂存区修改以后一定要commit一下
- 存入暂存区:
- 版本库:
git commit
以后的最终版本存入地方,git最重要的一个地方,因为只有版本库的修改才可以跟踪
查看状态
git status
查看当前git仓库与上一次commit之后的版本库的一切修改,包括工作区的修改和暂存区的修改(这种信息是不详细的)
很人性化的是,git status
会提示你下一步可能会做的事,比如你对工作区做了修改,他可能会提示下一步要git add
或者git checkout < filename >
, 你刚执行完git add
以后,git status
跟踪的暂存区的修改,他又会提示你下一步可能要提交git commit
或者git reset HEAD < filename >
git diff
这个命令返回的是你对工作区的修改,别想太多,和什么对比并不重要,你只要知道什么时候他会有信息返回,返回什么信息!什么时候有返回呢!你对工作区已经存在的文件修改(但是没有存入暂存区,也就是说没有git add
或者git rm
,所以一定要纠结的话,他比较的的确是暂存区和工作区的区别),如果有返回(新建文件git diff
看不到),返回什么,返回修改的详细信息,+是新添的行-是删去的行
git diff --cached
这个命令是查看你对暂存区的修改,也就是你git add
或者git rm
以后,git diff
的返回信息就用git diff --cached
来用了(这也是为什么这两个命令一样,只有参数不一样的原因,因为其实干的都是一件事,只是git diff
针对的对象是工作区,git diff --cached
针对的对象是暂存区)
git log
当前版本之前的commit日志记录,也就是说当前版本是回退回来的版本的话,当前版本之后的提交与回退都看不到(有个很重要的commit ID)
git reflog
包括版本回退、版本提交的日志,信息教git log会比较简单 这样把命令的针对对象分为三个区来理解,现在看撤销操作就很容易了:
- 针对工作区的撤销(必须保证没有
git add
/git rm
之前:git checkout -- filename
- 针对暂存区的撤销(必须是
git add
/git rm
以后才行:git reset HEAD filename
顺便想起git reset
的另一种用法,参数不一样啦,那肯定也是撤销操作,当然就是撤销提交,回退版本啦git reset --hard (HEAD^^^^)
/git reset --hard commit id
哦了,之前的信息全穿起来了!!!