HoRain 云小助手个人主页⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。目录⛳️ 推荐git log常用选项git blame恢复和回退1、git checkout检查出特定版本的文件2、git reset重置当前分支到特定提交3、git revert撤销某次提交4、git reflog查看历史操作记录实例查看 Git 提交历史可以帮助你了解代码的变更情况和开发进度。Git 提供了多种命令和选项来查看提交历史从简单的日志到详细的差异对比。Git 提交历史一般常用两个命令git log- 查看历史提交记录。git blame file- 以列表形式查看指定文件的历史修改记录。git log在使用 Git 提交了若干更新之后又或者克隆了某个项目想回顾下提交历史我们可以使用 git log 命令查看。git log命令用于查看 Git 仓库中提交历史记录。git log显示了从最新提交到最早提交的所有提交信息包括提交的哈希值、作者、提交日期和提交消息等。git log命令的基本语法git log [选项] [分支名/提交哈希]常用的选项包括-p显示提交的补丁具体更改内容。--oneline以简洁的一行格式显示提交信息。--graph以图形化方式显示分支和合并历史。--decorate显示分支和标签指向的提交。--author作者只显示特定作者的提交。--since时间只显示指定时间之后的提交。--until时间只显示指定时间之前的提交。--grep模式只显示包含指定模式的提交消息。--no-merges不显示合并提交。--stat显示简略统计信息包括修改的文件和行数。--abbrev-commit使用短提交哈希值。--pretty格式使用自定义的提交信息显示格式。针对我们前一章节的操作使用 git log 命令列出历史提交记录如下$ git log commit d5e9fc2c811e0ca2b2d28506ef7dc14171a207d9 (HEAD - master) Merge: c68142b 7774248 Author: runoob testrunoob.com Date: Fri May 3 15:55:58 2019 0800 Merge branch change_site commit c68142b562c260c3071754623b08e2657b4c6d5b Author: runoob testrunoob.com Date: Fri May 3 15:52:12 2019 0800 修改代码 commit 777424832e714cf65d3be79b50a4717aea51ab69 (change_site) Author: runoob testrunoob.com Date: Fri May 3 15:49:26 2019 0800 changed the runoob.php commit c1501a244676ff55e7cccac1ecac0e18cbf6cb00 Author: runoob testrunoob.com Date: Fri May 3 15:35:32 2019 0800我们可以用 --oneline 选项来查看历史记录的简洁的版本。$ git log --oneline $ git log --oneline d5e9fc2 (HEAD - master) Merge branch change_site c68142b 修改代码 7774248 (change_site) changed the runoob.php c1501a2 removed test.txt、add runoob.php 3e92c19 add test.txt 3b58100 第一次版本提交这告诉我们的是此项目的开发历史。我们还可以用 --graph 选项查看历史中什么时候出现了分支、合并。以下为相同的命令开启了拓扑图选项* d5e9fc2 (HEAD - master) Merge branch change_site |\ | * 7774248 (change_site) changed the runoob.php * | c68142b 修改代码 |/ * c1501a2 removed test.txt、add runoob.php * 3e92c19 add test.txt * 3b58100 第一次版本提交现在我们可以更清楚明了地看到何时工作分叉、又何时归并。你也可以用--reverse参数来逆向显示所有日志。$ git log --reverse --oneline 3b58100 第一次版本提交 3e92c19 add test.txt c1501a2 removed test.txt、add runoob.php 7774248 (change_site) changed the runoob.php c68142b 修改代码 d5e9fc2 (HEAD - master) Merge branch change_site如果只想查找指定用户的提交日志可以使用命令git log --author , 例如比方说我们要找 Git 源码中 Linus 提交的部分$ git log --authorLinus --oneline -5 81b50f3 Move builtin-* into a builtin/ subdirectory 3bb7256 make index-pack a built-in 377d027 make git pack-redundant a built-in b532581 make git unpack-file a built-in 112dd51 make mktag a built-in如果你要指定日期可以执行几个选项--since 和 --before但是你也可以用 --until 和 --after。例如如果我要看 Git 项目中三周前且在四月十八日之后的所有提交我可以执行这个我还用了 --no-merges 选项以隐藏合并提交$ git log --oneline --before{3.weeks.ago} --after{2010-04-18} --no-merges 5469e2d Git 1.7.1-rc2 d43427d Documentation/remote-helpers: Fix typos and improve language 272a36b Fixup: Second argument may be any arbitrary string b6c8d2d Documentation/remote-helpers: Add invocation section 5ce4f4e Documentation/urls: Rewrite to accomodate transport::address 00b84e9 Documentation/remote-helpers: Rewrite description 03aa87e Documentation: Describe other situations where -z affects git diff 77bc694 rebase-interactive: silence warning when no commits rewritten 636db2c t3301: add tests to use --format%N常用选项限制显示的提交数:git log -n number例如显示最近的 5 次提交git log -n 5显示自指定日期之后的提交git log --since2024-01-01显示指定日期之前的提交git log --until2024-07-01只显示某个作者的提交git log --authorAuthor Name更多git log命令可查看 http://git-scm.com/docs/git-log 或使用 git log --help 命令查看帮助信息。git blamegit blame命令用于逐行显示指定文件的每一行代码是由谁在什么时候引入或修改的。git blame可以追踪文件中每一行的变更历史包括作者、提交哈希、提交日期和提交消息等信息。如果要查看指定文件的修改记录可以使用 git blame 命令格式如下git blame [选项] 文件路径常用的选项包括-L 起始行号,结束行号只显示指定行号范围内的代码注释。-C对于重命名或拷贝的代码行也进行代码行溯源。-M对于移动的代码行也进行代码行溯源。-C -C或-M -M对于较多改动的代码行进行更进一步的溯源。--show-stats显示包含每个作者的行数统计信息。显示文件每一行的代码注释和相关信息git blame 文件路径只显示指定行号范围内的代码注释git blame -L 起始行号,结束行号 文件路径对于重命名或拷贝的代码行进行溯源git blame -C 文件路径对于移动的代码行进行溯源git blame -M 文件路径显示行数统计信息git blame --show-stats 文件路径git blame 命令是以列表形式显示修改记录如下实例$ git blame README ^d2097aa (tianqixin 2020-08-25 14:59:25 0800 1) # Runoob Git 测试 db9315b0 (runoob 2020-08-25 16:00:23 0800 2) # 菜鸟教程更多内容可以使用 git blame --help 查看完整的帮助文档了解更多选项和使用方式。恢复和回退Git 提供了多种方式来恢复和回退到之前的版本不同的命令适用于不同的场景和需求。以下是几种常见的方法git checkout切换分支或恢复文件到指定提交。git reset重置当前分支到指定提交软重置、混合重置、硬重置。git revert创建一个新的提交以撤销指定提交不改变提交历史。git reflog查看历史操作记录找回丢失的提交。1、git checkout检查出特定版本的文件git checkout 命令用于切换分支或恢复工作目录中的文件到指定的提交。恢复工作目录中的文件到某个提交git checkout commit -- filename例如将 file.txt 恢复到 abc123 提交时的版本git checkout abc123 -- file.txt切换到特定提交git checkout commit例如git checkout abc123这种方式切换到特定的提交时处于分离头指针detached HEAD状态。2、git reset重置当前分支到特定提交git reset 命令可以更改当前分支的提交历史它有三种主要模式--soft、--mixed 和 --hard。--soft只重置 HEAD 到指定的提交暂存区和工作目录保持不变。git reset --soft commit--mixed默认重置 HEAD 到指定的提交暂存区重置但工作目录保持不变。git reset --mixed commit--hard重置 HEAD 到指定的提交暂存区和工作目录都重置。git reset --hard commit例如将当前分支重置到 abc123 提交git reset --hard abc1233、git revert撤销某次提交git revert 命令创建一个新的提交用来撤销指定的提交它不会改变提交历史适用于已经推送到远程仓库的提交。git revert commit例如撤销 abc123 提交git revert abc1234、git reflog查看历史操作记录git reflog 命令记录了所有 HEAD 的移动。即使提交被删除或重置也可以通过 reflog 找回。git reflog利用 reflog 可以找到之前的提交哈希从而恢复到特定状态。例如git reset --hard HEAD{3}实例以下是一个综合示例演示如何使用这些命令恢复历史版本查看提交历史git log --oneline假设输出如下abc1234 Commit 1 def5678 Commit 2 ghi9012 Commit 3切换到 Commit 2处于分离头指针状态git checkout def5678重置到 Commit 2保留更改到暂存区git reset --soft def5678重置到 Commit 2取消暂存区更改git reset --mixed def5678重置到 Commit 2丢弃所有更改git reset --hard def5678撤销 Commit 2git revert def5678查看 reflog 找回丢失的提交git reflog找到之前的提交哈希并恢复git reset --hard HEAD{3}❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧