gpt4 book ai didi

git - 如何仅使用管道命令查找 git 提交的日期?

转载 作者:行者123 更新时间:2023-12-02 17:58:37 26 4
gpt4 key购买 nike

已经有一个 question询问如何在 Git 中查找提交日期。但是,该问题的所有答案都使用 git showgit log 命令,它们都是 porcelain commands ;关于瓷器命令的标准智慧似乎是它们的 output format may change因此,应尽可能避免在脚本中使用它们。

有没有办法仅使用管道命令来获取 git 提交的时间戳?

最佳答案

提交对象的格式如下:

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

(其中 SP 是 ASCII 空格字符,0x20,LF 是 ASCII 换行字符,0x0a)。

所以基本上为了实现你想要的,你:

  1. 调用 git cat-file commit <commitish_of_interest>
  2. 迭代该程序转储到其 stdout 的内容通过LF -终止线。
  3. 停在以 author SP 开头的行处.
  4. 将其拆分为空格,并获取最后两个字段。第一个是自 00:00 以来的秒数在第二个字段定义的时区中,其格式为 SHHMM哪里S是一个标志,-+ ,其中相应地定义了格林威治以西或以东的偏移量,并且 HHMM是偏移量,在 HH 中小时和 MM分钟,时区。
  5. 处理这两个字段的值以格式化时间戳。

请注意 author 的内容和committer仅在“正常”提交上字段才相同。在重新基址提交上,至少时间戳可能会有所不同,并且如果提交是由实际创作提交(其作者)以外的人重新基址化的,则字段将会不同。对于通过 git am 从补丁创建的提交也是如此。 .

关于git - 如何仅使用管道命令查找 git 提交的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52708548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com