在这里找到类似的内容:
How can `git log --all` miss a commit point?
...但是它处理悬空的提交,这不是我在这里遇到的问题。 (这是在git版本2.17.1,Ubuntu 18.04上)
基本上,我一直在使用一个脚本,该脚本自动创建一个小的git repo,具有空的提交和固定的时间戳;我一定今天晚上已经删除并重新创建了这个仓库至少100次。
在大约20分钟前,行为是相同的-这就是整个历史记录的样子(编辑:添加了--graph
,以显示它是纯线性历史记录,没有分支):
$ git --no-pager log --graph --all --pretty='%ad %cd %h'
* Wed Jul 4 16:56:04 2018 +0000 Wed Jul 4 16:56:04 2018 +0000 bec8f1c
* Wed Jul 4 16:10:24 2018 +0000 Wed Jul 4 16:10:24 2018 +0000 dd51181
* Wed Jun 20 18:31:47 2018 +0000 Wed Jun 20 18:31:47 2018 +0000 8b7ca2a
* Wed Jun 20 18:11:11 2018 +0000 Wed Jun 20 18:11:11 2018 +0000 9a32592
* Wed Jun 20 17:10:17 2018 +0000 Wed Jun 20 17:10:17 2018 +0000 2454ee0
* Wed Jun 20 16:56:22 2018 +0000 Wed Jun 20 16:56:22 2018 +0000 b77dee4
* Tue Jun 19 21:40:13 2018 +0000 Tue Jun 19 21:40:13 2018 +0000 c9dc470
* Tue Jun 19 19:20:31 2018 +0000 Tue Jun 19 19:20:31 2018 +0000 baceab3
* Tue Jun 19 18:30:11 2018 +0000 Tue Jun 19 18:30:11 2018 +0000 89ab6c2
* Tue Jun 19 17:35:19 2018 +0000 Tue Jun 19 17:35:19 2018 +0000 a95553d
* Thu Jun 14 10:01:05 2018 +0000 Thu Jun 14 10:01:05 2018 +0000 c61c8fc
* Thu Jun 14 09:19:41 2018 +0000 Thu Jun 14 09:19:41 2018 +0000 2046e07
* Thu Jun 14 08:26:38 2018 +0000 Thu Jun 14 08:26:38 2018 +0000 f205435
* Thu Jun 14 08:26:29 2018 +0000 Thu Jun 14 08:26:29 2018 +0000 d4c70f1
* Wed Jun 13 19:20:16 2018 +0000 Wed Jun 13 19:20:16 2018 +0000 28a5a55
我得到的git --no-pager log --all --pretty='%ad %h' --after 2018-06-13
的输出是相同的(我虽然在“ 2018-06-13之后”表示不包含2018-06-13的提交,但事实并非如此:“周三Jun仍然会在--after 2018-06-13
中列出13“提交。
无论如何,在整个晚上的大部分时间里,--after 2018-06-14
从Thu Jun 14 08:26:29
开始,并且包括Thu Jun 14
的所有四次提交,以及之后的所有提交;基本上看起来像这样:
$ git --no-pager log --all --pretty='%ad %h' --after 2018-06-14
Wed Jul 4 16:56:04 2018 +0000 bec8f1c
Wed Jul 4 16:10:24 2018 +0000 dd51181
Wed Jun 20 18:31:47 2018 +0000 8b7ca2a
Wed Jun 20 18:11:11 2018 +0000 9a32592
Wed Jun 20 17:10:17 2018 +0000 2454ee0
Wed Jun 20 16:56:22 2018 +0000 b77dee4
Tue Jun 19 21:40:13 2018 +0000 c9dc470
Tue Jun 19 19:20:31 2018 +0000 baceab3
Tue Jun 19 18:30:11 2018 +0000 89ab6c2
Tue Jun 19 17:35:19 2018 +0000 a95553d
Thu Jun 14 10:01:05 2018 +0000 c61c8fc
Thu Jun 14 09:19:41 2018 +0000 2046e07
Thu Jun 14 08:26:38 2018 +0000 f205435
Thu Jun 14 08:26:29 2018 +0000 d4c70f1
但是,在过去的20分钟内,它只是停止为同一命令返回Thu Jun 14 08:26:29
,Thu Jun 14 08:26:38
和Thu Jun 14 09:19:41
-所以现在我得到的是:
$ git --no-pager log --all --pretty='%ad %h' --after 2018-06-14
Wed Jul 4 16:56:04 2018 +0000 bec8f1c
Wed Jul 4 16:10:24 2018 +0000 dd51181
Wed Jun 20 18:31:47 2018 +0000 8b7ca2a
Wed Jun 20 18:11:11 2018 +0000 9a32592
Wed Jun 20 17:10:17 2018 +0000 2454ee0
Wed Jun 20 16:56:22 2018 +0000 b77dee4
Tue Jun 19 21:40:13 2018 +0000 c9dc470
Tue Jun 19 19:20:31 2018 +0000 baceab3
Tue Jun 19 18:30:11 2018 +0000 89ab6c2
Tue Jun 19 17:35:19 2018 +0000 a95553d
Thu Jun 14 10:01:05 2018 +0000 c61c8fc
发生了什么,为什么这些提交不再起作用了?我想如果这是一个较大的回购,并且有许多分支/贡献者,等等,这会更容易理解,因此有更多机会达到不一致的状态-但在这种情况下,其中甚至没有任何内容,只是空的提交?而且它甚至无法进入任何不一致的状态,因为我一直在删除它并从脚本中重新创建它?
有人知道这可能是什么原因吗,以及我以前用该命令调用时,如何使git用--after 2018-06-14
再次显示Thu Jun 14上的所有提交? !
顺便说一句,上面的链接文章确实提到了--full-history
,但在这里并没有太大帮助:
git --no-pager log --full-history --all --pretty='%ad %h' --after 2018-06-14
...返回的结果与我上面为调用而发布的结果完全相同,而没有--full-history
。
编辑:如果我使用--after '2018-06-14 00:00:00'
,我可以返回显示所有这四个提交,但是我100%肯定我在遇到此问题之前从未以这种形式使用过此命令。可能是,如果您没有在--after
中指定小时数,那么git
可能最终会随机分配它们-如果整整git
是随机的,我整晚都是“幸运的”选择00:00:00
来填写时间?
答案 0 :(得分:2)
Git的日期解析器使用本地时间作为基础,尝试将 card_id status trn_id num_denied num_approved
0 c1 Y 1 0 1
1 c2 Y 2 1 1
2 c2 N 3 1 1
3 c3 Y 4 0 2
4 c3 Y 5 0 2
指定为午夜祖鲁语(或将Z设置为午夜当地时间)。