# conflict

mergeする際に、mainとfeatureでそれぞれcommitを積んでいて、もしそれぞれのcommitにて、同じファイルの同じ行を編集していた場合、どっちの差分を取り込めば良いのか分からず、**conflic(衝突**)が起こります。

実際にconflictを起こしてみましょう。`feature3`にて作業します。

```bash
git switch -c feature3
```

`b.txt`を以下のように編集しましょう。

<pre data-title="b.txt◎"><code>sample2
tarou
<strong>hello
</strong></code></pre>

`git add`、`git commit`しましょう。

```bash
git add .
```

```bash
git commit
```

commit messageは以下とします。

```
b.txtにhelloを追加
```

次に`main`にて作業します。

```bash
git switch main
```

b.txtを以下のように編集します。

<pre data-title="b.txt◎"><code>sample2
tarou
<strong>good evening
</strong></code></pre>

`git add`、`git commit`しましょう。

```bash
git add .
```

```bash
git commit
```

commit messageは以下とします。

```
b.txtにgood eveningを追加
```

では、mergeをしてみます。

```bash
git merge --no-ff feature3
```

上記を実行すると、以下のようにb.txtがconflictしているとメッセージが表示されます。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2FSYdU9xkw8saF0ZalMSrm%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-11-27%2014.28.25.png?alt=media&#x26;token=297b20f5-ae82-4e20-af0a-7a1e4ea4c8a9" alt=""><figcaption></figcaption></figure>

ファイルを確認すると、以下のように表示されているかと思います。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2Fr3bb4hcjTmXsEPEDZOFC%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-11-27%2014.29.12.png?alt=media&#x26;token=60e5f105-9ed5-4230-bd56-93caa6d24009" alt=""><figcaption></figcaption></figure>

`<<　HEAD ===`で囲われている部分が現在のbranchでの変更内容で、`=== >>> feature3`で囲われている部分がfeature3での変更部分になります。同じファイルの同様の行が編集された場合にこのように表示されます。今回はどちらの変更分も取り込みたいため、

`<<　HEAD ===　===>>> feature3`の部分を削除しましょう。

{% code title="b.txt◎" %}

```
sample2
tarou
good evening
hello
```

{% endcode %}

ファイルの編集が終わったら、`git add`、`git commit`しましょう。

```bash
git add .
```

```bash
git commit
```

commit messageはデフォルトのままとします。

これでconflictを解消してmergeができたかと思います。
