使用Git进行版本控制
Posted 白龙码~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Git进行版本控制相关的知识,希望对你有一定的参考价值。
文章目录
Git版本控制
一、版本查看
git log
查询历史提交版本,默认显示对应版本的:
- 提交哈希值
- 提交者
- 提交日期
- 提交的捎带信息
当内容较多时,可以使用空格进行翻页,b向上翻页,q退出。
git log --pretty=oneline
简化输出,仅显示当前和之前的版本,以及提交的哈希值和提交的捎带信息。
git log --oneline
简化输出,仅显示当前和之前的版本,以及提交哈希值的前7个字符和提交的捎带信息。
git reflog
简化输出,显示所有的版本,其中HEAD@step
表示从当前版本移动至对应版本需要的步数。
注:HEAD是git用来控制版本的指针。
二、版本回退
git reset --hard <索引值>
回退至指定索引对应的版本。
- 索引指的是Git为每一个历史版本生成的哈希值,使用简化后的前7个字符亦可。
HEAD->
所在行表示HEAD指针指向的版本,即当前版本。
git reset --hard HEAD^
一个^
表示从当前版本开始回退一个版本,n个^
表示从当前版本开始回退n个版本。
git reset --hard HEAD~n
~n
表示从当前版本开始回退n个版本。
git reset选项解读
git reset
命令除了--hard
选项,还有--soft
和--mixed
选项。
-
--soft
:仅仅更新本地仓库,将HEAD指针移动至对应版本。工作区和暂存区的内容没有回退,其中相对于回退版本新增的文件和修改的内容,全部变成未commit的状态,存放在暂存区。简单来说,就是重置
git commit
。 -
--mixed(默认参数)
:工作区内容不变,将本地仓库和暂存区的内容更新至指定版本。简单来说,就是重置
git add + git commit
。 -
--hard
:首先将当前版本下没有提交的新增文件和修改内容全部清空,然后将工作区的内容恢复至本地库的对应版本。简单来说,就是重置
工作区 + git add + git commit
。
三、版本比较
git diff [文件名]
比较工作区与暂存区中文件的差异。
如果指定文件名,则仅比较指定文件的差异,否则比较当前工作区中的所有文件。
git diff <索引>/HEAD
比较当前工作区和指定版本的文件差异,索引即版本哈希值,若使用HEAD则表示与当前最新的版本之间的差异。
git diff <索引1> <索引2>
比较指定两个版本的文件差异。
四、撤销修改
文件的删除在Git中也是一种修改操作!
- 当文件已修改,但是还没有添加至暂存区
git checkout -- <文件名>
注:git checkout优先利用暂存区中的文件进行恢复,达到撤销修改的目的。如果暂存区为空,则利用本地库进行恢复。
- 当文件已修改,且已经添加至暂存区
# 先将暂存区的内容恢复成最近一个版本的状态
git reset [--mixed] HEAD <文件名>
# 再利用checkout进行恢复
git checkout -- <文件名>
- 当文件已修改,且已经提交至本地库
# 直接利用版本回退进行撤销
git reset --hard HEAD^
以上是关于使用Git进行版本控制的主要内容,如果未能解决你的问题,请参考以下文章