マージ (merge) とは?
- 加えた修正を統合する作業
- 自分の変更を加えたブランチを、元のブランチにマージすることによって、修正を流し込む。
- 変更を持ってるブランチと、変更を流し込まれるブランチを指定して行う。
-
git
コマンドや SourceTree の場合は、流し込む先のブランチに移動してから、取り込みたい変更を持っているブランチを指定して行う。
-
競合 (conflict)
- ほとんどの場合、Git は自動的にコミットを合成 (?) してくれるが、自動的にできない場合、競合が起きる。
- マージする両方のブランチの同じ個所に修正があると、競合を起こす場合がある。
- この場合は、手動でどうすべきかを指定する。
競合の例
- 修正前
original
int main(int argc, char **argv)
{
printf("foo");
return 0;
}
-
master
ブランチ-
"foo"
を"bar"
に書き換えた。
-
master
int main(int argc, char **argv)
{
printf("bar");
return 0;
}
-
develop
ブランチ-
"foo"
を"baz"
に書き換えた。
-
develop
int main(int argc, char **argv)
{
printf("baz");
return 0;
}
- これを、
master
ブランチに移動して、develop
ブランチをマージする
merge
int main(int argc, char **argv)
{
<<<<<<< HEAD
printf("bar");
=======
printf("baz");
>>>>>>> develop
return 0;
}
- 競合した部分を修正してコミットする
merge
int main(int argc, char **argv)
{
printf("foo bar baz");
return 0;
}