はじめに
チーム開発でgitを使うので、いずれ起こるかもしれないコンフリクトに対して適応できるようにします。
手始め
「hoge.txt」ファイルを作成します。中身は以下のようになっています。
こんにちは
新たなブランチを作成する
git checkout -b [ブランチ名]
でブランチの作成と切り替えを同時に行います。
$ git checkout -b second
git branch
で現在のブランチを確認できます。
$ git branch
master
* second
secondでのファイルの編集
hoge.txtに文字を1行追加してコミットします。
こんにちは
こんばんは
$ git add hoge.txt
$ git commit -am "add こんばんは to hoge.txt"
masterでのファイルの編集
masterブランチに戻ります。
$ git checkout master
Switched to branch 'master'
$ git branch
* master
second
この時hoge.txt
は1行のままです。
secondブランチとは違う文を追加していきます。
こんにちは
おやすみなさい
そしてコミットします。
$ git add hoge.txt
$ git commit -am "add おやすみなさい to hoge.text"
[master ce42458] add おやすみなさい to hoge.text
1 file changed, 2 insertions(+), 1 deletion(-)
マージしてコンフリクトを起こす
ここからが本題です。作成したsecondブランチをmasterブランチにマージしてコンフリクトさせます。
$ git merge second
Auto-merging hoge.txt
CONFLICT (content): Merge conflict in hoge.txt
Automatic merge failed; fix conflicts and then commit the result.
はい、これでコンフリクトが発生して「自動マージが失敗しました」と表示されています。
この状態で任意のエディタでファイルを確認すると以下のようになっています。(私の場合はVScodeです)
こんにちは
<<<<<<< HEAD (Current Change)
おやすみなさい
=======
こんばんは
>>>>>>> second (Incoming Change)
この場合「おやすみなさい」がカレントブランチの内容です。
そして「こんばんは」がsecondブランチの内容です。
今回はどちらも残したいので周りの<<<<<<< HEAD
と=======
と
>>>>>>> second
を消します。その後コミットを実行します
こんにちは
おやすみなさい
こんばんは
$ git add hoge.txt
$ git commit -am "merge second"
[master 61e9866] merge second
以上でコンフリクトを解消できました。
マージしてブランチが不要になった場合はgit branch -d
を使いましょう。
$ git branch -d second
Deleted branch second (was d8fbc89).
参考