git-log
を含むかなり複雑な--date-order
コマンドを使用して、リポジトリのステータスの概要を取得します。残念ながら、--date-order
はauthor日付ではなく、committer日付を使用しているようです。つまり、トピックブランチを最新のアップストリームにリベースすることでトピックブランチを最新の状態にするたびに、トピックブランチでの相対的なコミットのgit-log
の有益な時系列順序が失われます(つまり、各ブランチは単一になりますすべてのコミットがシーケンシャルでほぼ同一のコミッターのタイムスタンプにリベースされたため)
git-log
を取得して、committerタイムスタンプではなく、authorタイムスタンプでコミットを順序付けできる場合、これは解決されます。 。誰かがそれを行う方法を知っていますか?
Googleの検索結果からこのサイトにアクセスする場合は、下記の josephdpurcell のソリューション(および 詳細なブログ記事 !)をご覧ください。標準のgit-log
スタイルの出力、複数行、および各コミットに関する詳細なメッセージを探している場合は、非常に優れています。
残念なことに、私はこの質問を修正する必要があります。私はばかであり、私のユースケースについてより具体的な情報を提供しなかったためです。「git-log
モード」で--graph
を使用し、 git-log
自体をauthor-date-orderで動作させる。私が確認できる限り、git-log
itselfがグラフの順序付けと印刷を処理するため、これは外部git-log
から実行することは完全に不可能です。 。
スクリプト、またはgit-log
のパッチが必要な場合があります。誰かがそのようなスクリプトを書くか、2。git
作者と話してフラグの--author --date-order
の組み合わせを含めることができるようになるまで、これを開いたままにします。 (=
参考までに、現在の glog
function の出力は次のようになり、再注文する必要があります。
gitバージョン1.8.4は、--author-date-order
引数をgit log
に追加しました。 リリースノート によると、「出力はトポロジ的にソートされ、並行する履歴のコミットは作成者のタイムスタンプに基づいて混在して表示されます。」
さて、これを理解するのに非常に長い時間がかかりました( details )。要するに、不完全または不正確な例が多数見つかりました。次のコマンドは、私が期待することthinkを実行します。
$ git log --pretty="format:%at %C(yellow)commit %H%Creset\nAuthor: %an <%ae>\nDate: %aD\n\n %s\n" | sort -r | cut -d" " -f2- | sed -e "s/\\\n/\\`echo -e '\n\r'`/g" | tr -d '\15\32' | less -R
このスクリプトとその他のスクリプトは、GitHubの Git Extras にあります。
--date-order
/--topo-order
は、複数のブランチを同時に実行しているときに、リビジョンリスト内のコミットの順序を実際に制御するだけです。 "x is-a-a-y of y"関係は、コミッター/オーサリングタイムスタンプが遠い過去または未来であってもalways尊重されます。
git log --pretty="format:%at %H" | sort -g
のようなものが必要になり、ハッシュをgit log
にフィードバックします。
Jørgensenが提案したものを基に、探しているものを提供する「ワンライナー」ソリューションがあります。見やすくするためにここでフォーマットされています。改善を歓迎します!
SORTED_GIT_LOGS=$(git log --pretty="format:%at %H" | sort -g | cut -d' ' -f2); \
IFS=$(echo -en "\n\b"); for LOG in $SORTED_GIT_LOGS; do \
git show --name-only $LOG; \
done | less