# VS Code × CodeCommitで「masterに直接反映される問題」を解決する(図解付き)
## はじめに
VS Code から CodeCommit にコミットしたときに
- master に直接反映されてしまう
- PR を経由したいのにできない
- Aprod を作ったのに使えていない
という問題に直面しました。
この記事では、**原因・仕組み・正しい運用方法**を
図解(イメージ付き)で整理します。
---
# 結論(先に)
問題の原因はこれです👇
```text
ローカルで master のまま作業していた
そのため:
master → origin/master にそのまま push
となり、PR を経由せずに本流へ反映されていました。
Gitの全体イメージ(超重要)
まずは構造を理解します。
【ローカル(あなたのPC)】
├── master ← 今ここにいた
└── new_branch ← 作業用
【リモート(CodeCommit = origin)】
├── master
├── Aprod
└── new_branch
originとは何か?
origin = CodeCommit(リモートリポジトリ)
origin/master
origin/new_branch
👉 これは「CodeCommit上のブランチ」を意味します
ブランチとは何か(図解)
master(本流)
│
├── new_branch(作業用)
│ └── ここで開発
│
└── Aprod(古いブランチ)
👉 ブランチは「作業を分けるための線」です
なぜ master に直接反映されたのか
当時の状態👇
git branch --show-current
→ master
git branch -vv
→ origin/master
図で表すと👇
現在位置(★)
master ★
↓
origin/master(CodeCommit)
👉 この状態で push すると
master → origin/master
👉 即反映される(PRなし)
Aprodをpullしても意味がなかった理由
勘違いしやすいポイント👇
pull = ブランチ切り替え ❌
実際は👇
pull = 今いるブランチに取り込むだけ
イメージ
今いる場所:master
git pull origin Aprod
↓ 起きること
master に Aprod を混ぜる
(切り替えではない)
👉 だから master 作業のままだった
Aprodでファイルが消えた理由
master
├── fileA
├── fileB
└── fileC(最新)
Aprod(古い)
├── fileA
└── fileB
👉 Aprodに切り替えると👇
fileC が見えなくなる
👉 これは正常(壊れていない)
正しい開発フロー(図解)
① master を最新にする
↓
② 作業ブランチを作る
↓
③ 作業・コミット
↓
④ リモートへ push
↓
⑤ PR 作成
↓
⑥ master にマージ
実際のコマンド(重要)
① master に移動
git switch master
👉 作業の土台に戻る
② 最新化
git pull origin master
👉 CodeCommitの最新を取得
③ ブランチ作成
git switch -c new_branch
👉 これの意味👇
① new_branch を作る
② そのまま切り替える
図👇
master
↓
new_branch ★(今ここ)
④ コミット
git add .
git commit -m "修正内容"
⑤ push(重要)
git push -u origin new_branch
図👇
ローカル
new_branch
↓ push
origin(CodeCommit)
new_branch(作成される)
VS Codeの「Publish Branch」とは?
これ👇
Publish Branch
正体👇
git push -u origin 現在のブランチ
図解
ローカル
new_branch ★
↓
Publish Branch
↓
origin/new_branch が作成
👉 masterは触られない
Publish Branchは安全?
✔ 安全なケース
現在のブランチ:new_branch
👉 OK
❌ 危険なケース
現在のブランチ:master
👉 これだと
master → origin/master
最重要チェック
git branch --show-current
✔ 正常
new_branch
❌ 危険
master
PRの流れ(図解)
origin/new_branch
↓
Pull Request
↓
origin/master にマージ
よくある勘違い
❌ origin = ブランチ
→ 違う(リモート名)
❌ pullするとブランチが切り替わる
→ 切り替わらない
❌ featureは特別な機能
→ ただの名前
安全運用ルール(これだけ覚えればOK)
① 作業前にブランチ確認
② masterで作業しない
③ 必ず新しいブランチを切る
④ push先を意識する
⑤ PR経由でマージ
最終的にやること(テンプレ)
git switch master
git pull origin master
git switch -c new_branch
git add .
git commit -m "修正"
git push -u origin new_branch
まとめ(図で一発)
【NG】
master ★ → push → origin/master(即反映)
【OK】
master
↓
new_branch ★ → push → origin/new_branch
↓
PR
↓
origin/master
おわりに
今回のポイントはこれです👇
「今どのブランチにいるか」がすべて
これだけ意識すれば、
- master直push事故
- PRできない問題
- ブランチ混乱
はほぼ防げます。
以上です。