公司里面用的版本控制系统是git,之前一直使用svn,用了一段时间git,现在总结了一些在工作当中经常用到的一些比较重要的命令
-
撤销添加到暂存区的文件
- git reset head finename
撤销单个文件
- git reset head
撤销所有已经添加到暂存区的文件
- git reset head finename
-
使用版本库中的最新文件,放弃本地修改
- git checkout filename
放弃单个文件的修改
- git checkout *
放弃所有文件的修改
- git checkout filename
-
比较工作区和暂存区文件的区别
- 默认情况下git diff 比较的是工作区和暂存区文件之间的区别
- 加上参数比较的就是工作区和版本区或者暂存区和版本区之间的区别
- git diff --cached
暂存区和版本区之间的区别
- git diff master
工作区和版本区之间的区别
- git diff --cached
-
使用版本区的文件覆盖工作区和暂存区的文件
- git reset --hard head
使用版本区中的文件覆盖工作区和暂存区的文件
- git reset --hard head^
^表示回退到当前版本的上一个版本,也就是commit_id
- git reset --hard commit_id
同样我们也可以直接回退到某一个固定的版本id状态
注意:加hard和不加hard之间的区别,加hard表示使用版本库中的文件将暂存区和工作区的所有文件都覆盖掉,使用--hard参数的时候,只能将全部文件都覆盖掉,不能进行单独文件的覆盖,如果只希望覆盖某一个文件,那么只能使用checkout操作,因为有时候会遇到将别人文件覆盖的情况,或者合并分支合并错误,这个时候就需要回滚操作,reset --hard head 就比较重要了
- git reset --hard head
一般情况下,一旦进行了回滚操作,证明是之前的代码写乱了,才会进行,但是如果回滚之后,发现已经修改了的代码改的是对的,又想前进上去怎么办。
git reflog 用来查看所有的提交id,包括之前被回退的id
接下来容易办了,同样适用强制修改head的指向来进行前进操作
小结
现在总结一下:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。