GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )相关的知识,希望对你有一定的参考价值。
文章目录
一、查看提交记录 git log
1、查看详细提交记录
在 Git 版本库 中 , 可以查询每一次 使用 git commit
命令的提交记录 , 每次 git commit
提交都会保留一个快照 , 如果工程代码弄坏了 , 可以尝试从最近的一次 git commit
提交的快照进行恢复 ;
执行
git log
命令 , 会显示之前的提交记录 , 排序由近及远 ;
由打印的内容可以看出 , 最近的一次提交时 修改了 file2.txt 文件 ;
D:\\Git\\git-learning-course>git log
commit dd0db50c74c065dc8ad569ec41267a9c881e7d7e (HEAD -> master)
Author: hanshuliang <octopus_truth@163.com>
Date: Wed Dec 8 11:31:48 2021 +0800
modify file2
2、查看简略提交记录
执行
git log --pretty=oneline
命令 , 可以查看简略提交目录 ;
执行过程 :
D:\\Git\\git-learning-course>git log --pretty=oneline
dd0db50c74c065dc8ad569ec41267a9c881e7d7e (HEAD -> master) modify file2
63a9ef1a546c4d30c0e4f74ac2258b37bd585254 modify file1
72e82e0652ff454f83fa26e7ad186a74e69090e1 modify file4
5bcec31df6d485a957681f9f35b6d0461d19abf3 add 1 files
f95c831c111e8fa4d79cbdacc6ea306cde399959 add 3 files
f2f9a971bfc65c1067d8ee2907362c0b92a29fe6 (origin/master, origin/HEAD) Update README.md
5d7e8d4eee3def7d8e094fdee1508fb2e7b0c790 Initial commit
D:\\Git\\git-learning-course>
二、版本回滚 git reset
下图是 Git 版本库 最近的 git commit
提交 记录 ;
1、Git 中的版本表示 HEAD~1
Git 中的版本表示 :
HEAD
表示当前的版本 , 是dd0db50c74c065dc8ad569ec41267a9c881e7d7e (HEAD -> master) modify file2
版本 , 当前版本 , 查询出的第 1 1 1 个版本 ;HEAD~1
表示上一个版本 , 是63a9ef1a546c4d30c0e4f74ac2258b37bd585254 modify file1
版本 , 往上 1 1 1 个版本 , 查询出的第 2 2 2 个版本 ;HEAD~2
表示上上一个版本 , 是72e82e0652ff454f83fa26e7ad186a74e69090e1 modify file4
版本 , 往上 2 2 2 个版本 , 查询出的第 3 3 3 个版本 ;HEAD~3
表示上上上一个版本 , 是5bcec31df6d485a957681f9f35b6d0461d19abf3 add 1 files
版本 , 往上 3 3 3 个版本 , 查询出的第 4 4 4 个版本 ;HEAD~100
表示往上 100 100 100 个版本 , 是查询出的第 101 101 101 个版本 ;
2、版本库代码回滚
执行
git reset --hard HEAD~1
命令 , 就是往上回滚一个版本 , 回滚到 63a9ef1a546c4d30c0e4f74ac2258b37bd585254 modify file1
版本 , 这个版本中 file2.txt 不是空的 , 当前是有内容的 ;
执行回滚到上一个版本命令后 , file2.txt 文件中的内容消失 ;
三、撤销回滚
1、查询 git 操作 git reflog
执行
git reflog
命令 , 可以查询之前进行的 每一次 git 命令 ;
执行过程 :
D:\\Git\\git-learning-course>git reflog
63a9ef1 (HEAD -> master) HEAD@0: reset: moving to HEAD~1
dd0db50 HEAD@1: reset: moving to dd0db50
63a9ef1 (HEAD -> master) HEAD@2: reset: moving to HEAD~1
dd0db50 HEAD@3: reset: moving to dd0db50
72e82e0 HEAD@4: reset: moving to HEAD~1
63a9ef1 (HEAD -> master) HEAD@5: reset: moving to HEAD~1
dd0db50 HEAD@6: reset: moving to HEAD
dd0db50 HEAD@7: reset: moving to HEAD
dd0db50 HEAD@8: reset: moving to HEAD
dd0db50 HEAD@9: commit: modify file2
63a9ef1 (HEAD -> master) HEAD@10: commit: modify file1
72e82e0 HEAD@11: commit: modify file4
5bcec31 HEAD@12: commit: add 1 files
f95c831 HEAD@13: commit: add 3 files
f2f9a97 (origin/master, origin/HEAD) HEAD@14: clone: from https://codechina.csdn.net/han12020121/git-learning-course
D:\\Git\\git-learning-course>
2、撤销回滚操作 git reset --hard dd0db50
上一步操作 , 是由 HEAD 位置指向了 HEAD~1 位置 ,
63a9ef1 (HEAD -> master) HEAD@0: reset: moving to HEAD~1
可以重新撤销回滚 , 恢复到回滚之前的状态 ,
由
dd0db50 HEAD@6: reset: moving to HEAD
可以知道 , HEAD 的版本号是 dd0db50 ;
执行
git reset --hard dd0db50
命令 , 即可恢复成回滚之前的代码状态 ;
执行过程 :
D:\\Git\\git-learning-course>git reset --hard dd0db50
HEAD is now at dd0db50 modify file2
D:\\Git\\git-learning-course>
此时再查看 file2.txt 内容 , 发现内容恢复成了原来的样子 ;
以上是关于GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )的主要内容,如果未能解决你的问题,请参考以下文章
GitGit 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )
GitGit 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )
GitGit 分支管理 ( 使用 git cherry-pick 命令提取提交记录应用于当前分支 | 创建新分支应用某个提交 | git cherry-pick 冲突处理 )
GitGit 分支管理 ( 使用 git cherry-pick 命令提取提交记录应用于当前分支 | 创建新分支应用某个提交 | git cherry-pick 冲突处理 )