第十二周_T- Git 日志

118 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第 5 天,点击查看活动详情

作为开发人员,日志可是很重要的,不仅仅是程序里面的日志,它可以快速帮我们定位到问题。

Git 中是提交日志,记录了整个项目的改变,当然有问题的时候,Git 日志可以救命,可以定位到本次提交修改了什么东西,是谁修改的。这样也能快速定位、解决问题。

git log

当前分支

#按照提交时间从晚到最早列出所有 commit

#列出当前分支的版本历史:一直按回车,会一直展示

git log

#简化版:--oneline 顾名思义输出只占一行

git log --oneline

#假如我只想展示前几个,下面的 n 代表几个

git log -n // git log -4 只展示最近的四个 commit

#假如想要指定模糊搜索具体一个 commit 「-i 不区分大小写」

git log -i --author=xxx #按照作者搜索

git log -i --grep="message 内容" #按照备注的内容搜索

#单个文件: 列出某个文件的版本历史,包括文件改名

git log --follow [file]

所有分支

git log --all

#如果使用命令行,上面的命令有很大问题就是不好看

git log --all --graph #这样会按照树形展示,稍微好一点

#但是日常排查问题中,都是某一个分支,很少全部这样看。至少我目前没遇到这种情况

远程分支

既然能对本地分支各种查看,那么也能对远程分支查看

git log remote/branch

不过命令行界面总是不太好看的。更多的是用可视化界面查看问题。比如 IDEA 自带的。还有 SourceTree ,听说很好用,不过我太拉了,暂时没用过。

当然 git 也有自带的图形界面:直接在 Git Bash 中输入:gitk 回车

个人觉得一般吧。可能是因为 IDEA 用习惯了,还是觉得这个最顺手。

git reflog

这个可是救命的操作。git reflog 命令是用来恢复本地错误操作很重要的一个命令:显示可引用的历史版本记录。

可引用的历史版本

  • 使用 git log 只可以查看到 HEAD 指针及其之前的版本信息,如果版本发生过回退,则可能会出现,HEAD 指针之后仍存在历史提交版本的情况。但是这些提交信息 git log 是看不到的。

即 git log 只显示当前 HEAD 和它的祖先

  • 可以使用 git reflog 就能查看所有历史版本信息。而使用这个命令大多是为了版本回退或恢复操作使用,从中找到所需的 commit 索引。所以被命名为 reflog:即:引用日志

一般是下面这样的格式:

git reflog #展示简略信息

git reflog --no-abbrev #展示详细信息

使用案例

如果我们不小心删了一个分支。而我没这个分支还没合并呢。

此时 dev 分支被删了。可以看到可引用的历史版本里面有

然后基于这个 commit 在生成一个分支即可:

这样就生成了一个新分支:dev,不小心误删的东西都又回来了。

git checkout -b dev 11f9b1b

此时这个分支是新建的,没有和远程分支关联,再关联下即可。

git push -u origin dev :和远端 dev 分支关联

总结

git log:

查看修改、提交了什么东西

git reflog:

记录历史版本,如遇到误操作,可以使用它找到误操作的 commitId ,然后基于误操作的commitId 新建一个分支还原。