gitブランチングとマージに基本的な疑問があります。 ブランチをマスターに変更せずにマージすることはできますか。もしそうなら、マスターとブランチの間に存在するデルタ変更はどうなりますか?それはマスターブランチの変更で上書きされますか?以下のシナリオを参照してください。gitのmasterブランチに変更を加えずにブランチをマージするには?
私は2つのブランチマスターとBugBranchを持っています。
STEP 1:
C--B--A (master)
|
X (branch)
は、マスターから枝を取ったBugBranchを言います。 TestMerge.javaというファイルがあります。
public static void main(String[] args){
...
...
callSomeMethod();
switch(decision)
{
case A:
do_something
break;
case B:
do_something
break;
}
}
したがって、ステップ1では、マスターとBugBranchは同じように見えます。
ステップ2: ファイル(TestMerge)が以下のように変更されました。 私はマスターとブランチをマージしようとすると、問題がある:
public static void main(String[] args){
...
...
callSomeMethod();
}
C--B--A--1 (master)
|
X (branch)
STEP 3(単なるスイッチを削除)。デルタが存在し、BugBranchの変更を保存したいので、ファイル内のマージの競合が予想されます。しかし、奇妙なことは、マスターが変更されたことです。
は、以下試してみた
gitのチェックアウトのマスター
Gitはこれは本当に混乱してBugBranch
マージコマンド!
BugBranchでこのファイルを変更しましたか? – chaoluo
Gitにはデルタはありません。各コミットは、作業ディレクトリのフルスナップショットです。そして、ブランチはコミットするためのポインタに過ぎません。したがって、 'master'から分岐すれば' X'はなく、 'BugBranch'ブランチは' A'をコミットすることを指します。コミット 'A'をコミット' 1'にマージすると、コミット 'A'はすでにコミット' 1'の履歴の一部になっているので、それはノーオペレーションです。 – PetSerAl
ブランチ 'X'(BugBranch)に変更を加えましたか? – axiac