web-dev-qa-db-ja.com

特定の日のすべてのコミットを表示するにはどうすればよいですか?

git-scm.com および gitref.org の関連ドキュメントを既に見てきましたが、これを理解することはできません。

2013年11月12日火曜日のすべてのコミットを取得するとします。既存のレポを例にとると、その日にコミットがあり、前日と翌日にコミットしていることがわかります。

2013-11-11および2013-11-12を使用

以下はすべて、11月11日と12日の両方のコミットを提供します。

  • git log --after="2013-11-11" --until="2013-11-12"
  • git log --since="2013-11-11" --until="2013-11-12"
  • git log --after="2013-11-11" --before="2013-11-12"
  • git log --since="2013-11-11" --before="2013-11-12"

2013-11-12のみ

以下はすべて私にコミットを与えません:

  • git log --since="2013-11-12" --until="2013-11-12"
  • git log --since="2013-11-12" --before="2013-11-12"
  • git log --after="2013-11-12" --until="2013-11-12"
  • git log --after="2013-11-12" --before="2013-11-12"

2013-11-12および2013-11-13を使用

予想どおり(上記の2013-11-11および2013-11-12の結果から)、次のすべてが11月12日と13日の両方の結果を示しています。

  • git log --since="2013-11-12" --before="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"
  • git log --since="2013-11-12" --until="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"

...などなど。 sinceafterbefore、およびuntilのすべての可能な組み合わせを試したが、それでも答えが見つからない、またはそれらがオプションは、2つの日付が異なる場合は包括的であるように見えますが、同じ日になっている場合は排他的であるように見えるため、包括的または排他的です。私は何かを見逃しましたか/私は間違っていますか?!

153
3cheesewheel

ありがとうジョン・バーソロミュー!

答えは、時間を指定することです。 git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"

185
3cheesewheel

私は通常gitログを確認し、特定の日に何をしていたかを確認し、それに基づいてタイムシートを更新しますが、ISO形式で完全な日付を入力するのは面倒ですので、このようにします

git log --after=jun9 --before=jun10

--authorを追加して、コミットのみを出力します

git log --since=jun9 --until=jun10 --author=Robert 

これにより、6月の最後の9日に発生したコミットが出力されます(したがって、この場合は2016であり、2015や2014などではありません)。

--since/--afterおよび--until/--beforeパラメーターは、3 days agoyesterdayなどのようなものを取ることもできます。

23

受け入れられた答え(私が支持した)に何も問題はありませんが、...私たちは科学のためにここにいます!

以下の出力は、pretty=format:<string>プレースホルダー で展開/カスタマイズできます。

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12

同じ文字列がユーザーによって入力された可能性があるため、100%エラーの影響を受けません。ただし、使用されるプレースホルダーによっては許容されます。たとえば、上記のスニペットは失敗しません。

git logからJSON全体を解析し、そのデータを心のコンテンツに消費/操作することもできます。 https://github.com/dreamyguy/gitlogg をチェックして、決して振り返らないでください!

免責事項:それは私のプロジェクトの1つです。

11

その特定の目的のためにエイリアスを作成しました:

commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"

使用法:

git commitsAtDate 2017-08-18
8
Michael Große