23

git リポジトリで、ブランチABにマージすることは、 BAにマージすることと同じですか?

4

2 に答える 2

26

いいえ、A を B にマージすると、最終的にブランチ A には A の変更のみが含まれ、B には A+B の両方の変更が含まれます。

B を A にマージすると、A には A+B の両方の変更が含まれ、B には B の変更のみが含まれます。

始める:

 /A1-A2-A3
X 
 \B1-B2-B3

マージ コミットによる A から B:

 /A1-A2-A3
X 
 \B1-B2-B3-A*(1,2,3)

早送りでAからBへ:

 /A1-A2-A3
X 
 \A1-A2-A3-B1'-B2'-B3'

B から A へのマージ コミット:

 /A1-A2-A3-B*(B1,B2,B3)
X 
 \B1-B2-B3

早送りで B から A:

 /B1-B2-B3-A1'-A2'-A3'
X 
 \B1-B2-B3
于 2013-08-28T10:09:38.387 に答える
0

first parentマージが新しいマージ コミットを生成するときに呼び出される概念があります。
コマンドでマージコミットの親を確認し、実際のコミットハッシュgit show merge-commit-hashに置き換えます。 そして、次のようなものが得られます。 merge-commit-hash

commit [commit]
Merge: [parent1] [parent2]

次のコミット履歴があるとします。C1 は C2 と C3 の親です。そして、分岐 A は C2 を指し、分岐 B は C3 を指します。

C1<--C2
\<--C3

ブランチ A (C2) をブランチ B (C3) にマージすると、最初の親コミットは C3 になります。
ブランチ B (C3) をブランチ A (C2) にマージすると、最初の親コミットは C2 になります。

私のデモプロジェクトで確認できます。そしてTortoiseGitでロググラフを確認できます。
Walk Behavior → First Parentは、最初の親のコミットをフォローアップするだけです。これは、全体の歴史を理解するのに役立ちます。

于 2020-04-24T07:59:55.833 に答える