git init
创建一个目录
鼠标右击Git Bash Here,出现黑窗口,通过命令 git init 把这个目录变成git可以管理的仓库,即版本库。
git add
在版本库下有个文件改动,git add 文件,将文件添加到暂缓区,没有任何提示,说明已经添加成功了。
git commit -m "提交的注释"
在git add之后,git commit -m "提交的注释" 将改动过的文件提交到版本库中去。
git status
查看当前的状态,查看是否还有没有提交的文件。如果已经commit,则显示没有文件没提交。
如果修改了文件,则显示文件已经被修改,但是没有提交修改。
接下来,想看看修改了什么内容。则用到了git diff。
git diff
git diff可以知道我们修改了什么文件。
知道了修改了什么文件,则提交修改git add 文件,提交文件git commit 文件。
版本回退
git reset –hard HEAD^
git log命令显示从最近到最远的显示日志,我们可以看到最近三次提交,最近的一次是,增加内容为333333.上一次是添加内容222222,第一次默认是 111111.如果嫌上面显示的信息太多的话,我们可以使用命令 git log –pretty=oneline
现在我想使用版本回退,git reset –hard HEAD^,回退到上上个版本,则git reset –hard HEAD^^,回退多个版本则git reset –hard HEAD~n,n则代表数字。
已经回退到上上个版本,但是现在又想回退到上个版本,则git reset –hard 版本号,通过git log可以查看版本号。
但是现在的问题假如我已经关掉过一次命令行或者333内容的版本号我并不知道呢?要如何知道增加3333内容的版本号呢?
可以通过如下命令即可获取到版本号:git reflog
git reflog
通过commit的时候,添加的注释就可以知道,改动的版本所对应的版本号。
工作区与暂存区的区别
工作区:即git init的那个文件夹
暂存区:工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区)还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
我们前面说过使用Git提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
撤销修改
在未commit之前的操作
在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复以前的版本,现在我可以有如下几种方法可以做修改:
第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。
第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset –hard HEAD^
但是现在我不想使用上面的2种方法,我想直接想使用撤销命令该如何操作呢?首先在做撤销之前,我们可以先用 git status 查看下当前的状态。如下所示:
可以发现,Git会告诉你,git checkout — file 可以丢弃工作区的修改,如下命令:
git checkout - - readme.txt
用git checkout -- 文件,有两种情况。
- readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
- 另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
对于第二种情况,我想我们继续做demo来看下,假如现在我对readme.txt添加一行 内容为6666666666666,我git add 增加到暂存区后,接着添加内容7777777,我想通过撤销命令让其回到暂存区后的状态。如下所示:
注意:命令git checkout — readme.txt 中的 — 很重要,如果没有 — 的话,那么命令变成创建分支了。
删除文件
在当前目录下,rm 文件一般情况下,可以直接在文件目录中把文件删了,或者使用如上rm命令:rm b.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令 提交掉。
只要没有commit之前,如果我想在版本库中恢复此文件如何操作呢?
可以使用如下命令 git checkout — b.txt,如下所示: