どうやらthis:著者日付の指定された日付範囲にコミットを表示するにはどうすればいいですか?
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
フィルタはコミッター日に基づいてコミットします。指定した著者の日付範囲でコミットを表示するにはどうすればよいですか?
どうやらthis:著者日付の指定された日付範囲にコミットを表示するにはどうすればいいですか?
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
フィルタはコミッター日に基づいてコミットします。指定した著者の日付範囲でコミットを表示するにはどうすればよいですか?
少なくとも、Gitだけでは実行できません。 (この質問を訪れる他の人への注意:それは著者日付の表示に関するはありませんが、それはおよそ選択がによって作者日、ラ--since
/--after
と--until
/--before
を犯したのですこれらのセレクタはコミッター日付ではなく、使用しています。コミッターの日付が2000年代になるように、コミッターの日付が1999年のある日に差し引かれるように、コミットが「今」に行われたという極端な例を考えてみましょう。選択範囲が「いつでもコミッターの日付が1999年を10年以上越えているので、このコミットの選択を解除します)。
私はこれをGitの小さなバグだと考えています。コミッターの日付フィールドを使用するように要求できる場所であれば、著者の日付フィールドを使用するように要求することができます。 %ad
と%cd
などがありますが、コミットの選択が不可能なので、のログフォーマットはで簡単です。。私たちがもっとも近いのは、git rev-list
が著者日付でソートできることです(一般的なトポソート内)。
--use-author-date
ようgit rev-list
のグローバルスイッチは、単純なパッチとして機能するであろう、とGitリポジトリに追加するにはあまりにも難しいことではないだろうが、私は--min-author-age
と--max-author-age
または類似、および「並べ替えを持っている方が良いだろうと思います(一般的な--topo-order
フラグとは無関係に、フラグを設定すると、フラグは両方とも--author-date-order
と同じ効果を持ちます)。 (:日付フィルターを除いて、コミットは潜在的に興味深いものは何でも指定子の使用:などgit log
などgit rev-list
または同等で、ちょうど--all
だこのケースでは)回避策として
、あなたはすべての潜在的に興味深いコミットを一覧表示することができますし、すべてを抽出します(git log --format=%at
などを使用して)コミットIDのリストの独自のプルーニングを行い、残りのコミットIDをgit log --no-walk
に再送信します。しかし、これはせいぜい痛いだけです。詳細はTim Beigeleisen's answer using awkを参照してください。
私の混乱を解消するあなたの権限をありがとう - これは長い間私を悩ませていました。私はマニュアルページを見て、存在しないスイッチを見つけようと多くの時間を費やしました。既にこのために開いているバグはありますか? –
Gitの人々がこれをバグとみなしているかどうかはわかりません。メーリングリストへのリンクについては、https://github.com/git/gitをご覧ください。 – torek
あなた缶。
しかし、前述の@torekのように、純粋なGitではこれを行うことができない場合があります。 1つのオプションは、awk
にパイプにgit log
からかなりのフォーマット出力すること、およびそこに作者の日付を確認します:
git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"'
は、%ad
はISO形式の作者の日付を与え、%aN
は、著者名を与えます。
ありがとうございました - 私は先に進み、Torekの答えをより包括的に受け入れましたが、出発点を与えるためにあなたをアップアップしました:) –
たぶん私は何かを見逃していますが、これでは十分ではありませんか?
git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"
も参照してくださいhere
のこれは間違いなく受け入れられる回答でしょう。 –
@RossSolomon:*著者の日付を表示しますが、*コミッタの日付を*指定します。極端な例を挙げると、著者の日付を1999年に設定し、コミッターの日付を01-01-2017に設定してコミットを行うとします。 '%ad'ディレクティブは、これが2016年以前の方法であったとしても、1999年にコミットされたコミットを表示します! – torek
_「たぶん私は何かを見逃している」_はい。これはコミット日付に基づいて、OPと同じ**フィルタリング**の同じ方法を使用しますが、**は、自分が望むものを既に除外した後の著者の日付を**表示します。 18人はどのようにしてこのような悪い読解力を持っていましたか? –
可能な重複[Gitのログ:コミットの作者の日付別フィルタ](https://stackoverflow.com/questions/13987273/git-log-filter-by-commits-author -date) –