(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert

目录

背景

[一、(git log、git reflog)查看git提交日志及命令历史](#一、(git log、git reflog)查看git提交日志及命令历史)

[1.1 git log(提交日志)](#1.1 git log(提交日志))

[1.2 git reflog(命令历史)](#1.2 git reflog(命令历史))

[二、git reset(回退到指定的版本,并且保留更改)](#二、git reset(回退到指定的版本,并且保留更改))

[2.1 回退到指定版本](#2.1 回退到指定版本)

[2.2 快捷回退上一版本](#2.2 快捷回退上一版本)

[三、git reset --hard(回退到指定版本,不保留更改)](#三、git reset --hard(回退到指定版本,不保留更改))

[四、git revert(回退到指定版本,保留commit记录)](#四、git revert(回退到指定版本,保留commit记录))

[五、git stash](#五、git stash)

六、注意

[6.1 不小心git reset --hard回退了,怎么回到以前版本](#6.1 不小心git reset --hard回退了,怎么回到以前版本)

[6.2 git log和git reflog的应用场景](#6.2 git log和git reflog的应用场景)

[6.3 git reset和git revert的区别](#6.3 git reset和git revert的区别)


背景

我们开发过程中会遇到git数据提交错误、代码回滚,或者一些没用的comit进行合并,优化commit展示

一、(git log、git reflog)查看git提交日志及命令历史

1.1 git log(提交日志)

git 记录着所有的提交日志,通过log命令可以读取过去的提交记录 ,得到commit id即版本的哈希码

复制代码
git log
 四行详细记录,包括的信息有commit id、提交者、提交时间、备注
git log --pretty=oneline
输出的每个提交记录只占据一行,每行的显示内容为commit id + 备注

1.2 git reflog(命令历史)

通过relog命令可以读取过去的命令历史

复制代码
git reflog

二、git reset(回退到指定的版本,并且保留更改)

2.1 回退到指定版本

回退的同时,将回退对应版本到目前版本的commit信息记录将删除、代码不会删除、只是合并commit记录(用这个可以合并多个commit、来使commit记录看起来整洁)

复制代码
git reset <commit>

2.2 快捷回退上一版本

如果要回退到上一个版本,可以使用以下 Git 命令:

复制代码
git reset HEAD^

这个命令将会将当前版本回退到上一个版本,HEAD^ 表示上一个版本,HEAD^^表示上上个版本。

如果想回退更多个版本,用 HEAD~n 即可,比如回退到前5个版本:

复制代码
git reset HEAD~5

三、git reset --hard(回退到指定版本,不保留更改)

回退的同时,将代码和commit记录都将回退到指定版本(放弃目标版本以后的所有修改)

复制代码
git reset --hard <commit>

四、git revert(回退到指定版本,保留commit记录)

回退项目版本时,可以运行 git revert 命令,该命令会回退指定版本的修改,并创建一个新的提交来存储这些被撤销的更改。

复制代码
git revert --no-commit <commit>..HEAD

五、git stash

执行git stash 将当前所有未提交的代码修改,都不保留,撤销更改

复制代码
git stash

六、注意

6.1 不小心git reset --hard回退了,怎么回到以前版本

可以使用git reflog 来查看命令记录,然后再用git reset --hard 记录id 来进行复原

6.2 git log和git reflog的应用场景

git log是commit记录,git reflog是git 命令记录,同时这两个查看命令配合git reset(git reset --hard)可以让你在不同版本之间游刃有余

6.3 git reset和git revert的区别

reset执行后不会产生记录,revert执行后会产生记录。

相关推荐
GISer_Jing9 小时前
Git协作开发:feature分支、拉取最新并合并
大数据·git·elasticsearch
高山莫衣14 小时前
git rebase多次触发冲突
大数据·git·elasticsearch
码农藏经阁14 小时前
工作中常用的Git操作命令(一)
git
kobe_OKOK_15 小时前
【团队开发】git 操作流程
git·elasticsearch·团队开发
码农垦荒笔记15 小时前
Git 安装闭坑指南(仅 Windows 环境)
windows·git
CC码码1 天前
管理你的多个 Git 密钥(多平台多账号)
git·gitlab·github
CC码码1 天前
管理你的多个 Git 密钥(单平台多账号)
git·gitlab·github
大卫小东(Sheldon)1 天前
GIM 1.5发布了! 支持Windows系统了
git·ai·rust
flying jiang1 天前
将大仓库拆分为多个小仓库
git
李boyang10 天前
Git(四):远程操作
git