开启掘金成长之旅!这是我参与「掘金日新计划 · 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 新建一个分支还原。