どうやら this :
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
コミッターの日付に基づいてコミットをフィルタリングします。指定した著者の日付範囲のコミットを表示するにはどうすればよいですか?
少なくとも、Gitだけではできません。 (この質問にアクセスする他の人へのリマインダー:それはviewing作者の日付ではなく、selecting by by作者の日付、la --since
/--after
および--until
/--before
に関するものです。セレクタは、著者の日付ではなくcommitterの日付を使用します。極端な例として、コミットが「今」行われたため、コミッタの日付は2000年代ですが、author-dateフィールドで選択範囲が「世紀の変わり目付近」であれば、コミッターの日付は「現在」であり、1999年から10年以上後なので、このコミットの選択を解除します。
私はこれをGitの小さなバグだと考えています。コミッターの日付フィールドを使用するように要求できる場所であれば、作成者の日付フィールドを使用するように要求できるはずです。 %ad
や%cd
などがあるため、これはlog formatで簡単ですが、commit selectionでは不可能です。最も近いのは、git rev-list
が作成者の日付でソートできることです(一般的なtopo-sorting内)。
git rev-list
のような--use-author-date
のグローバルスイッチは、単純なパッチとして機能し、Gitに追加するのはそれほど難しくありませんが、--min-author-age
と--max-author-age
または同様のもの、および「作成者の日付で並べ替え」をする方が良いと思いますフラグ(一般的な--topo-order
フラグとは無関係です。そのため、both flagsの設定は--author-date-order
と同じ効果があります)。
回避策として、(git rev-list
または同等のgit log
などのすべての潜在的に興味深いコミットをリストすることができます:日付フィルターを除き、コミットを潜在的に興味深いものにする任意の指定子を使用します:この場合は--all
だけです)作成者の日付をすべて抽出しますフィールド(git log --format=%at
など)を使用して、コミットIDのリストを独自に整理し、残りのコミットIDをgit log --no-walk
に再送信します。しかし、これはせいぜい苦痛です。詳細については、 awkを使用したTim Beigeleisenの回答 を参照してください。
たぶん私は何かを見逃していますが、これで十分ではないでしょうか?
git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"
here も参照してください
あなたcan。
しかし、@ torekが述べたように、純粋なGitでこれを行うことはできないかもしれません。 1つのオプションは、git log
をawk
に追加し、そこで著者の日付を確認します。
git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"'
ここでは、%ad
は作成者の日付をISO形式で提供し、%aN
は著者名を示します。