簡體   English   中英

來自git log的奇怪行為 - 因為

[英]Strange behavior from git log --since

我有一個包含18個提交的測試存儲庫。 git log | grep Date: git log | grep Date:返回以下內容:

Date:   Fri Sep 20 08:04:13 2013 +0200
Date:   Fri Sep 20 08:03:28 2013 +0200
Date:   Fri Sep 20 08:02:05 2013 +0200
Date:   Thu Sep 19 09:53:10 2013 +0200
Date:   Wed Sep 18 17:04:41 2013 +0200
Date:   Wed Sep 18 17:03:36 2013 +0200
Date:   Sat Sep 14 14:42:10 2013 +0200
Date:   Wed Sep 11 10:37:25 2013 +0200
Date:   Fri Aug 30 13:59:43 2013 +0200
Date:   Fri Aug 30 13:56:35 2013 +0200
Date:   Fri Aug 30 11:30:17 2013 +0200
Date:   Thu Aug 29 13:44:28 2013 +0200
Date:   Thu Aug 29 13:34:32 2013 +0200
Date:   Wed Aug 28 14:44:03 2013 +0200
Date:   Wed Aug 28 14:32:44 2013 +0200
Date:   Tue Aug 27 16:18:53 2013 +0200
Date:   Tue Aug 27 16:16:29 2013 +0200
Date:   Tue Aug 27 15:46:04 2013 +0200

我想從今天發生的所有提交(2013年9月20日)中獲取日志,所以我嘗試了

git log --since=20-09-2013 | grep Date: 

我對此一無所知。 所以我在這里搜索了一下,發現了這個問題。 在評論中,它說明了這一點

似乎是這樣,它沒有時間默認為當天的最后一秒。

好的沒問題。 讓我們試試git log --since=19-09-2013 那回來了

Date:   Fri Sep 20 08:04:13 2013 +0200
Date:   Fri Sep 20 08:03:28 2013 +0200
Date:   Fri Sep 20 08:02:05 2013 +0200
Date:   Thu Sep 19 09:53:10 2013 +0200

等等,這看起來很奇怪,不是嗎? 如果它應該使用指定日期的最后一秒,為什么它會顯示在該日期09:53:10發生的提交? 不應該git只顯示2013年9月19日之后發生的提交嗎?

但等等,它變得更加陌生! 我嘗試添加一個時間,結果導致了

git log --since=20-09-201309:00:00 
Date:   Fri Sep 20 08:04:13 2013 +0200
Date:   Fri Sep 20 08:03:28 2013 +0200
Date:   Fri Sep 20 08:02:05 2013 +0200

這樣做了......等一下......所有的提交都發生在09:00:00之前。 為什么git會顯示它們? 事實上,據我所知,我只是犯了語法錯誤! 讓我們嘗試一些東西:

git log --since=20-09-201312:08:00 | grep Date:
Date:   Fri Sep 20 08:04:13 2013 +0200
Date:   Fri Sep 20 08:03:28 2013 +0200
Date:   Fri Sep 20 08:02:05 2013 +0200

仍然有效......

git log --since=20-09-201312:09:00 | grep Date:
<nothing>

嗯,那里發生了什么? 好像git只使用最后兩個: - 分隔數字。 但是為什么git會顯示20.09.2013 08:00之后發生的提交,如果它似乎認為實際上我正在尋找20.09.201312 08:00之后的提交? 這對我沒有任何意義。

任何人都能向我解釋這個爛攤子嗎? 這並不是說我沒有解決方案來解決我的問題,但我想了解,這里發生了什么......

默認情況下, git log的日期將以默認格式顯示。

--date = default顯示原始時區(提交者或作者)的時間戳。

基於Git幫助日志

--date = local顯示用戶本地時區的時間戳。

--date = default顯示原始時區(提交者或作者)的時間戳。

我建議你運行git log --date=local --since=<your date> 它應該顯示本地機器的所有提交時間。

現在,回到你關於--since的問題。

如果--since=<date>沒有特定的時間,它將在您運行此命令時使用您的本地時間。

例如,

--since "20-09-2013"

當您在09AM運行此命令時,將充當

--since "20-09-2013 09:00:00"

所以,這就是為什么它沒有在那天做出一些提交的原因。 (因為它已經過了你當前的時間)

如果您想搜索今天的所有提交,請使用

--since "20-09-2013 00:00:00"

回到神秘的故事

所以,現在git log --since=19-09-2013. 那回來了

日期:星期五9月20日08:04:13 2013 +0200

日期:星期五9月20日08:03:28 2013 +0200

日期:星期五9月20日08:02:05 2013 +0200

日期:星期四9月19日09:53:10 2013 +0200

我猜你從2013年9月20日之后的08:04:13運行了這個命令。(根據你的提示, 從今天開始使用時,它什么都沒有顯示。)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM