11

重複した変更を見つけるためのレシピが欲しいです。patch-id は同じである可能性がありますが、コミット属性は異なる場合があります。

これは patch-id を意図的に使用しているようです:

git patch-id --help

IOW、これを使用して、重複する可能性のあるコミットを探すことができます。

「git log」、「git patch-id」、および uniq をつなぎ合わせるとうまくいかない可能性があると思いますが、誰かがうまく機能するコマンドを持っていれば、それを感謝します。

4

7 に答える 7

12

重複した変更は同じブランチ上にない可能性が高いため (その間に元に戻す場合を除く)、git cherryを使用できます。

git cherry [-v] [<upstream> [<head> [<limit>]]]

upstreamの変更の重複をチェックするブランチはどこになりますかhead

于 2012-07-23T07:31:06.077 に答える
4

おもちゃのリポジトリで機能するドラフトがありますが、パッチ->コミットマップをメモリに保持しているため、大きなリポジトリで問題が発生する可能性があります。

# print commit pairs with the same patch-id
for c in $(git rev-list HEAD); do \
    git show $c | git patch-id; done \
| perl -anle '($p,$c)=@F;print "$c $s{$p}" if $s{$p};$s{$p}=$c'

出力は、同じパッチIDを持つコミットのペアである必要があります(3つの重複ABCは、「A B」、次に「B C」として出力されます)。

git rev-listコマンドを変更して、チェックされるコミットを制限します。

git log --format=%H HEAD somefile

コミットの詳細を表示するには「|xargsgitshow」を追加し、要約を表示するには「| xargs git show-s--oneline」を追加します。

0569473 add 6-8
5e56314 add 6-8 again
bece3c3 comment
e037ed6 add comment again

後のコミットで追加の変更があったため、元のケースではpatch-idが機能しなかったことがわかりました。「gitlog-S」の方が便利でした。

于 2012-07-25T04:30:30.447 に答える