1. ホーム
  2. git

[解決済み] 指定した日付範囲のコミットを著者名で表示させるには?

2022-10-25 12:43:26

質問

どうやら これ :

git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"

に基づいてコミットをフィルタリングします。 コミッターの日付 . 指定した作者の日付範囲のコミットを表示するにはどうすればよいですか?

どのように解決するのですか?

できません。少なくとも、Gitだけではできません。 (この質問を訪れた他の人への注意: それは を見ることではありません。 を見ることではありません。 によるコミットの選択 作者の日付、つまり --since / --after そして --until / --before . これらのセレクタは コミッター の日付、作者の日付を使用します。 極端な例として、"now" でコミットされ、コミッターの日付は2000年代、しかし author-date フィールドでは1999年のある日に遡ったコミットを考えてみましょう。 もし、選択範囲が "世紀の変わり目付近の任意の時間" であれば、コミッターの日付が "今" で、1999年より10年以上先なので、このコミットは選択から外れることになります)。

私はこれを Git の小さなバグだと考えています。コミッターの日付フィールドを使うようにリクエストできるのであれば、どこでも著者の日付フィールドを使うようにリクエストできるはずです。 これは ログの書式設定 を使えば簡単です。 %ad%cd などでは不可能ですが コミット選択 . 最も近いのは git rev-list が(一般的なトポソートの範囲内で)著者名-日付でソートできることです。

でのグローバルなスイッチは git rev-list のように --use-author-date のように、単純なパッチとして機能し、Git に追加するのもそれほど難しくはないでしょうが、より良いのは --min-author-age--max-author-age などで、"sort by author date" フラグ (一般的な --topo-order フラグと独立しており、そのため の両方が フラグと同じ効果をもたらします。 --author-date-order ).

回避策として、興味のありそうなコミットをすべてリストアップすることができます ( git rev-list のような同等のものを使用します。 git log : 日付フィルタを除いて、コミットが潜在的に興味深いものになるような指定子を使います。 --all である) そして、すべての author-date フィールドを抽出します (これは git log --format=%at などで)抽出し、コミット ID のリストを自分で刈り込み、残ったコミット ID を再び git log --no-walk . しかし、これはせいぜい痛みを伴うだけです。 参照 Tim Beigeleisen の awk を使った回答 を参照してください。