特定のプロジェクトでリベースされて縮小されたコミットの数を特定できるかどうかは疑問です。私はスカッシュを実行したものだけでなく、すべてのリベースを解決することができます。rebase -iを使用して押しつぶされたコミットを特定する-i
私は基本的に、ユーザが特定のプロジェクトのために走ったリベースの数を数えることができる関数を記述しようとしています。
例えば、次のハッシュを持つ3つのコミットを持つプロジェクトがある場合1234
、5678
、9999
。私はそれが1234
をコミット識別できるようにしたい はもともと1111
と2222
をコミットしたが、リベースと1234
をコミットするために一緒に押しつぶされました。
同様に、私はgit log | grep -i merge
を実行して、マージして作成されたものをコミット見つけることができます。
理想的には、これは前述のコマンドと同様の1ライナーになります。
2つ以上のコミットを1つに縮退する経験から、改行によって結合されたすべてのコミットメッセージを含むリベースされたコミットが発生します(リベース中にコミットメッセージは編集されないものとします)。この情報では、それは可能ではないようです。それでも、私のプロジェクトが大いに役立つので、これをやりたいと思っています。
TLDR:リベースによって作成されたコミットを検出する1つのライナー。 Gitはリベースされたコミットをマークするために特別なことをしますか?
"2つ以上のコミットを1つに縮退した経験から、改行によって結合されたすべてのコミットメッセージを含むリベースされたコミットになります。 - そんなことさえありません。それはちょうどデフォルトです。メッセージは、リベース中またはリベース後に編集することができます。しかし、再び、マージコミットは必ずしもそのメッセージに「マージ」という単語を含むとは限りません。プロジェクトに関する多くの情報がなくても、どのような前提が可能かはっきりしていません。 – hvd
@hvdはい、リベース中にコミットメッセージが編集されていないと仮定していました。編集された質問を参照してください。 – marcusshep
あなたのローカルリポジトリでは、reflogを使っておおよその見積もりを得ることができます: 'git reflog | awk 'BEGIN {n = 0}/rebase -i/{n + = 1; next} {if(n)print n; @ 0} END {if(n)print n} '' – eush77