# マージリクエストする

```bash
(dev-br-name) $ git fetch origin
(dev-br-name) $ git rebase origin/main
(dev-br-name) $ git push --set-upstream origin dev-br-name
```

- `git fetch origin`で、ローカルにあるリモートブランチの参照を更新できます
- `git rebase origin/main`でメインブランチの更新を取り込むことができます
  - `git rebase`することでコミット履歴が直線的になります
  - `git merge`でも構いません
- `git push --set-upstream origin ブランチ名`で、GitLabリポジトリに対してプッシュしてください
- プッシュした後、ターミナルにGitLab上にマージリクエスト作成の案内が表示されるので、それにしたがってMRを作成してください
- このプロジェクトではメインブランチ（`main`）は保護されていて、直接プッシュすることはできません

## コンフリクトした場合

```bash
(dev-br-name) $ git rebase origin/main
# ここで "CONFLICT" のメッセージが出た場合

# 1. 衝突したファイルをエディタで開いて修正
# 2. 修正したファイルをステージ
(dev-br-name) $ git add 修正したファイル

# 3. 続けて rebase を再開
(dev-br-name) $ git rebase --continue
```

- コンフリクト（変更内容の衝突）が生じた場合、ターミナルに`"CONFLICT"`のメッセージが表示されます
- `git status`で修正が必要なファイルを確認できます
- 衝突が発生したファイルには `<<<<<, =====, >>>>>`の区切りが挿入されます
- それぞれどちらのブランチの変更かを確認し、意図した内容に修正してください
- 修正後は、ファイルをステージ（`git add`）し、リベースを再開（`git rebase --continue`）してください
  - すべてのコンフリクトが解消するまで、コンフリクトの修正 → ステージング → リベース再開、を繰り返してください
  - `git rebase --abort`でリベースを中断できます

## メインブランチで作業してしまった場合

```bash
(main) $ git merge origin/main
(main) $ git branch dev-br-name
(main) $ git switch dev-br-name
(dev-br-name) $ git push --set-upstream origin
```

- うっかりローカルのメインブランチで作業してしまうこともあると思います
- その場合は、一度ダミーの開発ブランチを作成してください
- この手順で`main`ブランチの作業内容を保ったままプッシュできるようにないます

## MR作成時のルール

- マージリクエストには必ず目的や変更内容を記述してください
- レビュアーを指名したり、ラベルの設定も適切に行なってください
