使用Git进行版本控制

Git版本控制

一、版本查看

git log

查询历史提交版本,默认显示对应版本的:

  • 提交哈希值
  • 提交者
  • 提交日期
  • 提交的捎带信息

当内容较多时,可以使用空格进行翻页b向上翻页q退出

git log --pretty=oneline

简化输出仅显示当前和之前的版本,以及提交的哈希值和提交的捎带信息。

git log --oneline

简化输出仅显示当前和之前的版本,以及提交哈希值的前7个字符和提交的捎带信息。

git reflog

简化输出显示所有的版本,其中HEAD@{step}表示从当前版本移动至对应版本需要的步数

注:HEAD是git用来控制版本的指针。

二、版本回退

git reset --hard <索引值>

回退至指定索引对应的版本。

image-20221003161521539

  • 索引指的是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^
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白龙码~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值