Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 日志中更紧凑的相对日期?_Git - Fatal编程技术网

Git 日志中更紧凑的相对日期?

Git 日志中更紧凑的相对日期?,git,Git,考虑使用--date=relative和格式字符串%ar作为作者日期相对[1]的自定义git日志输出: * c44addf - (21 minutes ago) adding e on dev - Jonah (dev) * 2506d90 - (22 minutes ago) adding d - Jonah | * 310855e - (22 minutes ago) adding e - Jonah (HEAD, master) |/ * 7b47b37 - (31 minutes a

考虑使用
--date=relative
和格式字符串
%ar
作为作者日期相对[1]的自定义git日志输出:

* c44addf - (21 minutes ago) adding e on dev - Jonah (dev)
* 2506d90 - (22 minutes ago) adding d - Jonah
| * 310855e - (22 minutes ago) adding e - Jonah (HEAD, master)
|/  
* 7b47b37 - (31 minutes ago) 2nd commit on dev - Jonah
* db00522 - (30 minutes ago) master 2nd commit - Jonah
* c58c898 - (32 minutes ago) initial - Jonah
相对日期显示比需要的更详细。而不是:

(31 minutes ago)
我希望:

(31 m)
这可能吗


[1] 完整命令是
log--graph--abbrev commit--decoration--date=relative--format=format:“%C(蓝色粗体)%h%C(重置)-(绿色粗体)(%ar)%C(重置)%C(白色)%s%C(重置)%C(白色暗淡)-(an%C(重置)%C(黄色粗体)%d%C(重置)“--所有的

我不认为有一种内置的方式可以以您所寻找的方式输出自定义日期格式

我查看了git日志文档,唯一可用的相对日期格式配置是提交者日期的
%cr
,作者日期的
%ar
,您已经在使用后一种格式,因此无法使用

但是您可以使用一些命令行魔法和一个简单的python脚本来完成这项工作。我是这样做的:

名为prettyDate.py的python脚本:

#!/usr/bin/python

import fileinput
import datetime
import sys

def prettydate(d):
    diff = datetime.datetime.utcnow() - d
    s = diff.seconds
    if diff.days > 7 or diff.days < 0:
        return d.strftime('%d %b %y')
    elif diff.days == 1:
        return '1 d'
    elif diff.days > 1:
        return '{} ds'.format(diff.days)
    elif s <= 1:
        return 'just now'
    elif s < 60:
        return '{} s'.format(s)
    elif s < 120:
        return '1 m'
    elif s < 3600:
        return '{} ms'.format(s/60)
    elif s < 7200:
        return '1 h'
    else:
        return '{} hs'.format(s/3600)

if __name__ == '__main__':

    for line in fileinput.input():
        lineSplit = line.split(' ')
        commit = lineSplit[0]
        timestamp = lineSplit[1]

        gitDt = datetime.datetime.utcfromtimestamp(int(timestamp))

        print commit + ' - (' + prettydate(gitDt) + ')'
上面的
git log
语句将返回提交id和Unix时间戳,该时间戳通过管道传输到python脚本进行格式化。脚本可以调整为您喜欢的任何格式,如果您不想每次都键入整个命令,则可以创建别名

示例输出:

b82462e - (2 ms)
i81362f - (8 hs)
j85462g - (1 d)

如果是一个月前的
该显示什么?
“1个月”、“2个月”等如何?这些细节并不重要——问题是如何定制一般的显示。
b82462e - (2 ms)
i81362f - (8 hs)
j85462g - (1 d)