背景
我们开发过程中会遇到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执行后会产生记录。