(详解踩坑)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执行后会产生记录。

相关推荐
李少兄4 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
先跑起来再说10 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
承渊政道13 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
Doro再努力13 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
摇滚侠16 小时前
MAC IDEA GIT 提交区显示了几个不存在的目录
git·idea
城东17 小时前
Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]
git·head·远程仓库远端·比本地和提交的head旧·其他人拉不到最新代码
何中应1 天前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应1 天前
Git本地仓库命令补充
git
sun0077001 天前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
胖虎11 天前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份