Pon*_*ont 3 git scripting git-plumbing
已经有一个问题询问如何在 Git 中找到提交的日期。但是,该问题的所有答案都使用git show或git log命令,它们都是瓷器命令;关于瓷器命令的标准智慧似乎是它们的输出格式可能会改变,因此应尽可能避免在脚本中使用它们。
有没有办法只使用管道命令来获取 git commit 的时间戳?
提交对象的格式如下:
tree SP SHA_1_NAME_AS_HEX LF
parent SP SHA_1_NAME_AS_HEX LF
...
author SP any number of words SP <email_addr> SP TIMESTAMP SP TZ_OFFSET LF
committer SP any number of words SP <email_addr> SP TIMESTAMP SP TZ_OFFSET LF
LF
commit message LF
LF
extensive commit message
Run Code Online (Sandbox Code Playgroud)
(其中SP是 ASCII 空格字符,0x20,LF是 ASCII 换行符,0x0a)。
所以基本上要实现你想要的,你:
git cat-file commit <commitish_of_interest>stdout
byLF终止行的内容。author SP。00:00第二个字段定义的时区以来的秒数,其格式为
SHHMMwhereS是一个符号,-或者+,whcih 定义了偏移量是在格林威治西部还是东部,相应地,HHMM是时区的偏移量,以HH小时和MM分钟为单位。请注意,author和committer字段的内容仅在“正常”提交时相同。在重新定位的提交上,至少时间戳可能不同,并且如果提交是由实际创作提交的人(其作者)以外的人重新定位的,则字段将不同。对于通过补丁创建的提交也是如此git am。