Git のマージ メモ
マージ (merge) とは?
- 加えた修正を統合する作業
- 自分の変更を加えたブランチを、元のブランチにマージすることによって、修正を流し込む。
- 変更を持ってるブランチと、変更を流し込まれるブランチを指定して行う。
-
git
コマンドや SourceTree の場合は、流し込む先のブランチに移動してから、取り込みたい変更を持っているブランチを指定して行う。
-
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;
}
参考資料
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;
}
Author And Source
この問題について(Git のマージ メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/inabe49/items/e7ff697d0675f23b3c36著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .