LoginSignup
3
2

More than 1 year has passed since last update.

[Github]意図的にコンフリクトを発生させて対応方法を覚える

Last updated at Posted at 2021-04-29

はじめに

チーム開発でgitを使うので、いずれ起こるかもしれないコンフリクトに対して適応できるようにします。

手始め

「hoge.txt」ファイルを作成します。中身は以下のようになっています。

hoge.txt
こんにちは

新たなブランチを作成する

git checkout -b [ブランチ名]でブランチの作成と切り替えを同時に行います。

$ git checkout -b second

git branchで現在のブランチを確認できます。

$ git branch
  master
* second

secondでのファイルの編集

hoge.txtに文字を1行追加してコミットします。

hoge.txt
こんにちは
こんばんは
$ 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ブランチとは違う文を追加していきます。

hoge.txt
こんにちは
おやすみなさい

そしてコミットします。

$ 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を消します。その後コミットを実行します

hoge.txt
こんにちは
おやすみなさい
こんばんは
$ 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).

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2