0

これは繰り返される質問かもしれませんが、正確な答えは見つかりませんでした。

それぞれ 3 つのコミットを持つ 2 つのブランチ br1 と br2 があるとします。

br1

  • コミットする
  • コミットb
  • コミット c

br2

  • コミットする
  • コミット e
  • コミット f

br2 から br1 にマージすると、git log on br1 show commits a、b、c、d、e、f.

それぞれ 3 つのコミットを持つ 2 つのブランチ br1 と br2 があるとします。

br2 とのマージ後の br1

  • コミットする
  • コミットb
  • コミット c
  • コミットする
  • コミット e
  • コミット f

br1 だけで作成されたコミットをフィルタリングする方法はありますか? (私は git log br1..br2 を試しましたが、他の方法はありますか?)

マージが Fast-forward または Automerge の場合、GIT はマージのコミットを記録しますか? (競合がある場合にコミットが表示されますが、自動マージでは表示されません)

4

3 に答える 3

1

ブランチは、特定のコミットへの単なるポインターです。したがって、特定のコミットがどのブランチから来たのかを知ることはできません。

早送りを行う場合、変更されるのは、特定のブランチが指すコミットが切り替えられることだけです。そのため、余分なコミットは記録されません。追加のコミットを記録する場合は、を使用しますgit merge --no-ff

于 2011-05-06T11:55:25.297 に答える
0

なぜこれを知ることが重要なのかはわかりませんが、そうであれば、br1 から新しいブランチを作成し、そのブランチを使用して br2 をマージできます。次に、br1 と br2 は変更されず、どちらにどの変更が含まれているかがわかりますが、両方の変更セットを含むマージ ブランチもあります。

br1

  • a
  • b
  • c

br2

  • d
  • e

mbr1_2

  • a
  • b
  • c
  • d
  • e
于 2011-05-06T13:02:35.043 に答える
0

問題git log br1..br2は、br1 の一部であるコミットを抑制しようとすることですが、現在はすべてのコミットが br1 の一部であるため、何も表示されません。

できることは、br2 のマージの直前にコミットを見つけることです。git log br1^..br2、しかし、それは br1 が前進していない場合にのみ機能します。

一般に、関連するマージを見つけて、マージされたコミットを表示するのが最善の方法です。

git log merge^1..merge^2
于 2012-05-30T17:21:55.087 に答える