1

今は3月8日です。3月1日からのgitの履歴を見たいです。そのために私はコマンドを使用しています:

$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-01 0am"

正常に動作します。次に、「将来」の履歴を確認したいと思います(3月8日以降、after値が+1日増加します)。例:

$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-11 0am"

コマンドは空の履歴を返しますが、これは正しいです。そのafter場合、値は18に等しくなります。

$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-18 0am"

Gitは1か月の履歴を返し始めます。なんで?git log私の例では、日時の形式に問題があるようです。

gitバージョン1.7.12.4(Apple Git-37)

4

1 に答える 1

1

この問題には未解決のバグがあります。ソースから git をビルドした場合は、test-dateユーティリティが含まれています。これは、さまざまな日付を実行した結果の一部です (注 - 18 日は私にとってブレークポイントではなくなったため、19 日を使用しています)。

$ ./test-date approxidate "2013-3-01 0am"
2013-3-01 0am -> 2013-03-01 19:22:21 +0000

$ ./test-date approxidate "2013-3-11 0am"
2013-3-11 0am -> 2013-03-11 19:22:21 +0000

$ ./test-date approxidate "2013-3-19 0am"
2013-3-19 0am -> 2013-03-03 19:22:21 +0000

どのような場合でも時間に問題があることは明らかなので、時間を修正しましょう。

$ ./test-date approxidate "2013-3-01 0:00"
2013-3-01 0:00 -> 2013-03-01 08:00:00 +0000
$ ./test-date approxidate "2013-3-19 0:00"
2013-3-19 0:00 -> 2013-03-19 07:00:00 +0000

それは少し良くなり、私たちの将来の日付はもはや深刻な誤りではありませんが、時間は私のタイムゾーンに関連しており、DST がある場合とない場合では異なります (E: 将来の読者のために、DST シフトは 2013-03-10 に発生しました)であるため、これらの日付にはシフトが含まれます)。

$ ./test-date approxidate "2013-3-19 0:00 +0000"
2013-3-19 0:00 +0000 -> 2013-03-19 00:00:00 +0000

今、私たちの日付は少し良くなっています. -0800タイムゾーンを有効にしたい場合は、 / -0700PSTPDT、またはその他のタイムゾーンに簡単に変更できるようになりました。

要するに、次の 2 つの問題があります。

  1. 時間が正しく解析されていません。時刻コンポーネントが含まれると、git は日付の解析についてよりスマートになります。
  2. 任意の日付を解析するために、git は your を破棄し、現在の月の日付に yourddを使用します。mm

    $ ./test-date approxidate "2013-3-20"
    2013-3-20 -> 2013-03-03 19:22:21 +0000
    $ ./test-date approxidate "2013-4-19"
    2013-4-19 -> 2013-03-04 19:22:21 +0000
    $ ./test-date approxidate "2013-4-32"
    2013-4-32 -> 2013-03-04 19:22:21 +0000
    

時間を修正し、意図に応じてオプションでタイムゾーンを追加することで、問題を修正できるはずです。

于 2013-03-08T19:43:38.757 に答える