之前我们对于git已经有了一定的了解,现在我们学习一些关于git的新内容。
首先,我们先来认识一个命令:
git status
//⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改,注意指的是仓库和工作区对比
关于三区的内容,上一篇文章已经讲过了,这里我们就简单介绍下:
工作区:是指自己编写内容的位置
暂存区:是指将工作区内容通过git add暂时保存的位置
版本区:即本地仓库位置
接下来我们再来认识几个新的命令:
git diff [file];
//表示显⽰暂存区和⼯作区⽂件的差异
git diff HEAD -- [file];
//命令来查看版本库和⼯作区⽂件的区别
git log
//表示查看日志
通过上面的指令,我们就可以简单查看三区的对比信息了。
Git能够管理⽂件的历史版本,这也是版本控制器重要的能⼒,现在我想要曾经写过的某个版本。怎么办?
git reset --soft +HEAD;
//参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本
git reset --mixed +HEAD;
//为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变
git reset --hard +HEAD;
//参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命
//令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重
补充知识:
HEAD 说明:
可直接写成commit id,表⽰指定退回的版本
HEAD表⽰当前版本
HEAD^上⼀个版本
HEAD^^上上⼀个版本
可以使⽤〜数字表⽰:
HEAD~0表⽰当前版本
HEAD~1上⼀个版本
HEAD~2上上⼀个版本
重点:
git reflog;
//该命令⽤来记录本地的每⼀次命令
该命令可能可以补救下自己的某次错误操作。
git --version;
//查看git版本
情况⼀:对于⼯作区的代码,还没有 add:
对于该情况,我们当然可以直接删除想去掉的内容即可,但是如果内容过多,还是要学习常规操作的。
git checkout -- [file];
//注意:命令中的-- 很重要,切记不要省略,⼀旦省略,该命令就变为其他意思。
//该命令表示恢复到上⼀次 add 或 commit
//实际上只改变工作区
情况⼆:已经 add ,但没有 commit:
操作如下:
git reset --mixed HEAD [file];
git reset --hard HEAD [file];
//回到了情况一
git checkout -- [file];
情况三:已经 add ,并且也 commit 了:
该部分比较特殊:
这是有条件的,就是你还没有把⾃⼰的本地版本库推送到远程,否则,是不行的。
git reset --hard HEAD^ [file];
//
git checkout --[file];
在Git中,删除也是⼀个修改操作.
git删除有两种可能:
1.确实要从版本库中删除该⽂件
git rm file;
将⽂件从暂存区和⼯作区中删除,并且commit.
2.不⼩⼼删错了
对第⼆种情况,很明显误删,需要使⽤ git 来进⾏恢复
操作如下:
//该操作其实其实就是回退操作
//等同于情况二
git reset --mixed HEAD [file];
git checkout --file;
最后,bye!