1. ホーム
  2. ギット

[解決済み】特定のコミットを含むマージコミットを検索する

2022-04-08 23:26:21

質問

次のような歴史を想像してください。

       c---e---g--- feature
      /         \
-a---b---d---f---h--- master

コミット "c" がマスターにマージされたことを知るにはどうしたらいいですか (つまり、マージコミット "h" を見つける)?

解決方法は?

あなたの例では、ブランチ feature はまだ利用可能です。

その際 h が最後の結果です。

git log master ^feature --ancestry-path


もし、ブランチ feature の間にある履歴行にマージコミットを表示することができます。 cmaster :

git log <SHA-1_for_c>..master --ancestry-path --merges

ただし、この場合 h との間、および eg について feature .


以下のコマンドの結果を比較する。

git rev-list <SHA-1_for_c>..master --ancestry-path

git rev-list <SHA-1_for_c>..master --first-parent

の SHA-1 が得られます。 h をcommonの最後の行として指定します。

利用できるのであれば comm -1 -2 この結果について msysgitであれば、以下のperlコードで比較できます。

perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/'  file1 file2

(Perlのコード http://www.cyberciti.biz/faq/command-to-display-lines-common-in-files/ これは comp.unix.shell ニュースグループの "someone から取得したものです)。

参照 プロセス代替 を使えば、ワンライナーにすることができます。