这不是你认为的问题。
我想知道何时创建了特定的ref。我不想知道作者的时间戳或提交者时间戳是什么。
例如:如果我从一个更新我的本地仓库的远程仓库中提取,我想检索创建本地仓库报价的时间戳。
[remote-host]$ git show --format='%H %cD' refs/heads/master
25f2508a379adf2f8aa264afe6f7e5046943274a Mon, 1 Aug 2016 11:33:12 -0700
[remote-host]$ logout
Connection to remote-host closed.
[local-host]$ git fetch
remote: Counting objects: 165073, done
remote: Finding sources: 100% (1836/1836)
remote: Total 1836 (delta 484), reused 1374 (delta 484)
Receiving objects: 100% (1836/1836), 4.10 MiB | 0 bytes/s, done.
Resolving deltas: 100% (484/484), completed with 262 local objects.
...
[local-host]$ git show --format='%H %cD' 25f2508a379adf2f8aa264afe6f7e5046943274a
25f2508a379adf2f8aa264afe6f7e5046943274a Mon, 1 Aug 2016 11:33:12 -0700
[local-host]$ date
Mon Aug 1 11:50:44 PDT 2016
我想要的输出是Mon Aug 1 11:50:44 PDT 2016
(即获取的时间),而不是远程和本地主机上正确相同的提交者日期。
我想过使用git reflog
,但该命令的输出奇怪地没有任何时间戳信息。
答案 0 :(得分:1)
我不认为git
跟踪您正在寻找的信息,我认为这更准确地描述为"在我的本地系统上创建blob的日期&#34 ;。
你可以:
首先查找带有匹配内容哈希的松散blob,如果找到它,假设该blob的mtime
是在系统上创建的时间(因为它不应该&# 39;由任何后续操作修改):
cid=25f2508a379adf2f8aa264afe6f7e5046943274a
if test -f .git/objects/${cid:0:2}/${cid:2}; then
ls -l .git/objects/${cid:0:2}/${cid:2}
fi
如果您找不到松散的对象,请查看您的包文件以查找相应的内容ID,如果找到它,则假定相应包文件的mtime
为日期你想要的:
for idx in .git/objects/pack/*.idx; do
if git show-index < $idx | grep $cid; then
ls -l ${idx/idx/pack}
break
fi
done
答案 1 :(得分:-1)
使用--date=short
或--date=relative
/ --relative-date
(或实际上任何日期指令)将显示reflog条目本身的时间戳,而不是提交的时间戳,在{...}
部分内:
$ git reflog torturetest --date=relative
8bb1189 torturetest@{3 days ago}: branch: Created from HEAD
$ git reflog torturetest --date=default
8bb1189 torturetest@{Fri Jul 29 00:17:04 2016 -0700}: branch: Created from HEAD
这个问题的主要问题是不能保证Created from
条目存在:它可能永远不会被放入reflog中,或者它可能已经过期。