写日报老忘昨天做了啥,git log 朋友来帮忙

2022-03-19  本文已影响0人  前端西瓜哥

大家好,我是前端西瓜哥。

大概上个月开始,我们公司就开始要求写每日简报了,要写昨天做的工作和今天要做的工作。作为一名打杂前端,做的需求杂而小,很容易忘记做过的一些工作,每次都要想半天,太难了。

但是 git log 好朋友不会忘记我们的付出,我想我们可以找它帮帮忙。

那我们赶紧来学习如何和 git log 沟通吧。

(如果你熟悉 git log 的使用,直接跳到文末看实现)

git log

我们切换到项目的根目录下,输入 git log。

这种不提供任何参数的命令,可以得到具体的代码历史提交信息

commit 会从最近到最旧排序,每个 commit 会显示:

  1. 完整的哈希值。用于标识唯一 commit
  2. 作者名和作者邮箱
  3. 提交时间
  4. 提交说明(message)
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test

git log -p

p 是补丁(patch)的意思,该命令会展示每个提交相对上一个提交,具体修改了什么内容

如果只展示最近几个,可以加多个数字参数。如 git log -p -3 表示只展示最近三个提交的修改内容。

git log --stat

stat,是统计的意思。通过添加 --stat 参数,我们可以在默认 git log 的基础上,显示文件的改动统计。

具体是统计每个文件新增了几行,删除了几行内容,这是对于文本文件来说的。

 README.md | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

对于像是图片的二进制类型图片来说,则是会显示字节数的变化。

 0.jpg | Bin 20790 -> 96186 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

git log --prety=oneline

--pretty 参数可以用于自定义设置格式,git 为我们提供了很多可选项。

可以使用的选项很多,这里就不一一讲解了,可以自己去看 git 的官方文档,然后自己在本地测试一波。

我们常用的 git log --oneline 其实就是 git log --pretty=oneline --abbrev-commit 的简写。

如果你想自定义 commit 内容格式,可以使用 format:<string>

比如你只想知道每个 commit 的(1)相对时间(2)提交说明,可以这样写:

git log --pretty=format:"%ar %s"

其中 %ar(author date, relative)表示 commit 的相对时间,%s(subject)表示提交说明。

更多占位符的说明可以看官方文档,这里不展开讲。

git log --graph

graph 选项可以让我们的 commint 以图形的方式去显示分支的分叉和合并变化。为了能够一个窗口范围能够看到更多的 commit,通常我们会配合上 --oneline。

git log --oneline --graph

git log --since=1.day

--since 可以用来设置时间筛选项目,比如 2.weeks 只显示最近两周的提交,1.day 显示最近一天的提交,也可以是具体的一个事件戳,如 '2022-03-17'。

限制范围的除了时间,还可以是作者(--author=<作者名>),提交说明(--grep="fix:")等。

git log -S

输出曾经删除或添加了特定字符串的所有 commit。这在我们在寻找一个函数的什么时候被删除和添加很有用。比如看看 getCurrentNode 函数是什么时候被删除的:

git log -S getCurrentNode

显示昨天所有的提交说明

我们学了很多 git log 的选项的使用,其中的一些用法正好可以用来实现我们的部分需求。

git log --since=1.day --author="watermelon" --pretty=format:"%ad %s" --date=format:"%m/%d %H:%M" --all --no-merges

不过这行命令也太长了点,我们用 git alias 设置个短一点的别名:

git config --global alias.done 'log --since=1.day --author="huanghao" --pretty=format:"%ad %s" --date=format:"%m/%d %H:%M" --all --no-merges'

以后我们早上醒来,输入 git done,就能轻松愉快地知道自己昨天做了什么需求工作了。

03/17 20:27 添加 index.html 文件
03/17 20:26 初始化

对了,还有周一早上醒来找上周五提交的情景,只要改为 --since-3.days,再配一个新的别名,比如 done3 就完事了。

当然这里也有不太智能的地方,有时候我们偶尔想看看两天内之间的提交,或者自己在另一个项目中的名字又不同了,就需要在命令行上做修改。

解决办法是有的,说一下思路。可以自己再写个 bash 脚本,接受时间范围参数,底层去调用 git 命令。时间范围不传的话,提供默认的 1.day。

执行脚本时,先通过 git config --get user.name 取得当前 git 用户名,再将这个名字和传入的时间注入到刚才那个非常长的脚本里,就可以实现灵活输出了。

这里读者朋友可以试着实现。

结尾

git log 的选项非常多,这里只是简单介绍了几个,更多复杂细节的选项可以看 git 文档,本地输入 git log --help 命令者访问 https://git-scm.com/docs/git-log 页面都可以。

不过一些基本的选项就足够我们的日常工作,或者说我们更常使用的是一些图形化工具。

我是每天写日报的前端西瓜哥,欢迎关注我。

上一篇下一篇

猜你喜欢

热点阅读