Git・GitHubを使った開発フロー

GitHub DesktopとGitHubのWeb画面で操作

1 / 22
はじめに

mainへ直接送らず、ブランチで作ってプルリクエストで確かめる。

前回|mainへ直接

はじめてのGit・GitHub

  • 編集して、mainにcommitする
  • Push originで、すぐGitHubのmainが変わる
  • 間違いも、そのままみんなに届く

今回|ブランチとPR

この資料の流れ

  • 作業用のブランチで、編集してcommitする
  • プルリクエスト(PR)という提案書で、変更を見せる
  • 確かめてから、mainへ入れる(マージ)

ブランチの変更をmainへ取り込むことをマージと呼びます。一人で作るときも、見直してから入れられます。

main:みんなが使う基準のブランチ。前回のmyprojectにも最初からある

2 / 22
全体像

ブランチで作り、mainへ入れるまでを4段階で進める。

例:myprojectのmypage.htmlに、お問い合わせ欄を足す

mainadd-contact
01 ブランチを作る 02 PRで見せる 03 確かめる 04 1つにまとめてmainへ
  1. 01 ブランチを作る
  2. 02 PRで見せる
  3. 03 確かめる
  4. 04 1つにまとめてmainへ

ブランチで何をしても、マージするまでmainは変わらない。

3 / 22
01 ブランチを作る

作業用のブランチを、mainから作る。

GitHub Desktop 3.x・前回のmyprojectを開いた状態

GitHub Desktop

Current Branch → New Branch

  • Current Branchがmainであることを見る
  • Nameにadd-contactと入力
  • Create Branchを押す
Create Branch

作られたブランチ

Current Branch:add-contact

  • 作った直後は、mainと同じ中身になる
  • 以後のcommitは、ここに積まれる

mainにいる状態で作ると、mainが元になります。

ブランチ名は、中身が分かる英語を2〜3語つなぐ

4 / 22
01 ブランチを作る

ブランチに記録しても、mainは変わらない。

add-contact

お問い合わせ欄と説明文を、2回に分けてcommit

この図をテキストで読む

フォルダ構成。フォルダ 1・ファイル 2。 myproject/ ├─ README.md └─ mypage.html[変更]

main

前回pushした状態のまま

この図をテキストで読む

フォルダ構成。フォルダ 1・ファイル 2。 myproject/ ├─ README.md └─ mypage.html

commitの手順は前回と同じです。違うのは、commitがブランチに積まれることだけです。

mainへ切り替えると、フォルダの中身もmainの状態に戻る

5 / 22
02 PRで見せる

Publish branchで、ブランチをGitHubへ送る。

手元のPC

Current Branch:add-contact

  • 2つのcommitが手元にある
  • GitHubにはまだこのブランチがない
Publish branch

GitHub

myprojectのブランチが2本になる

  • main:前回のまま
  • add-contact:新しく届いた

ブランチを送っただけでは、GitHubのmainは変わりません。

このブランチへの2回目からは、Push originで送る

6 / 22
02 PRで見せる

プルリクエストは「このブランチをmainへ入れたい」という提案書。

入れたいブランチと入れ先の組で作る(例:add-contact → main)

Conversation

提案の説明と会話。タイトル・説明・レビューのコメントが時系列に並ぶ。

Commits

このブランチに積んだcommitの一覧。直すたびに増える。

Checks

自動の検査の結果。緑は合格、赤は不合格。

Files changed

mainと比べて変わった行(差分)。レビューはここを読む。

PRの画面は、この4つのタブで1つの提案を見せます。

PRはpull requestの略。提案をmainへ取り込むことをマージと呼ぶ

7 / 22
02 PRで見せる

PRは、Draft・Open・Mergedの順に進む。

Ready for review
Convert to draft
緑ならSquash and merge
Close pull request
この図をテキストで読む

状態遷移図。4状態・4遷移。 【状態】(★ = 焦点) 1. Draft(作業中・マージできない)〔開始〕 2. Open(レビューと検査を待つ) 3. ★ Merged(mainに入った)〔終了〕 4. Closed(マージせずに閉じた)〔終了〕 【遷移】(A —[イベント [条件] / 動作]→ B) - Draft —[Ready for review]→ Open - Open —[Convert to draft]→ Draft - Open —[緑ならSquash and merge]→ Merged - Open —[Close pull request]→ Closed 開始: Draft から始まる。 終了: Merged / Closed で終わる。

最初からOpenで作ることもできます。Closedは取り下げた提案で、Reopenで開き直せます。

Ready for reviewのボタンでDraftを外すと、表示がOpenになる

8 / 22
02 PRで見せる

Draft PRで、途中のまま見せる。

Preview Pull Request → Create Pull Requestで開く

GitHubの作成画面

add-contact → main

  • タイトル:お問い合わせ欄を足す
  • 説明:何を、なぜ変えたか
  • ボタン横の▼でDraftを選んで作る
Draft pull request

できたPR

#1 お問い合わせ欄を足す

  • 状態はDraft(下書き)
  • 変わった行と、記録の一覧が見られる
  • URLを送れば、ほかの人も見られる

Draftで作れば、途中のままでも見せて相談できます。

GitHubのプランでDraftを選べないときは、通常のPRで進める

9 / 22
02 PRで見せる

Draftは「まだ途中」の印。マージできない。

Draft

作業中

  • レビューは、この間に受ける
  • commitを足すと、同じPRに積まれる(例:説明文)
  • 途中の相談や、方向の確認に使う

Ready for review

仕上がった合図

  • マージボタンが押せるようになる
  • 押すのは、検査が緑になってから
  • Convert to draftでDraftへ戻せる

5S LABのリポジトリでは、Draftの間は自動の検査を止め、Openになってから実行します。

10 / 22
03 確かめる

Draftのままレビューを受け、指摘は同じブランチで直す。

レビュー

Files changedで、変わった行を読む

  • レビューする人が、行にコメントを付ける
  • 例:「送信ボタンの文言を『送る』に変えて」
  • 書いた人が直してcommitし、Push origin
commit・Push origin

同じPR

Commitsが3つになる

  • お問い合わせ欄を足す
  • 説明文を足す
  • 送信ボタンの文言を直す(指摘の対応)

レビューは人のほか、AIに頼むこともできます。どちらも、読むのはFiles changedの差分です。

PRを作り直す必要はない

11 / 22
03 確かめる

Ready for reviewで、Draftの印を外す。

DraftのPR

レビューの指摘を直し終えた

  • マージボタンの場所に、Ready for reviewが出ている
  • Ready for reviewを押す
Ready for review

OpenのPR

Draftの印が外れる

  • GitHub Actionsが、決めておいた検査を始める
  • 結果が、PRの画面に並ぶ

検査の中身はリポジトリごとに決めます。テストや書式の確認などです。

12 / 22
03 確かめる

検査がすべて緑になってから、マージする。

すべて通った

すべてに緑のチェック

  • 並ぶのは緑のチェックだけ
  • Squash and mergeへ進む

通らなかった

赤い×が1つでもある

  • 赤い×の行のDetailsで、理由を読む
  • 直してcommit・pushし、もう一度待つ

赤いままマージすると、検査に通らない変更がmainに入ります。緑になるまで待ちます。

13 / 22
04 mainへ入れる

Squash and mergeで、1つの記録にしてmainへ入れる。

マージボタンの▼で選び、Confirm squash and mergeで確定

PRの記録

add-contactの3つのcommit

  • お問い合わせ欄を足す
  • 説明文を足す
  • 送信ボタンの文言を直す
Squash and merge

mainの記録

1つのcommitとして加わる

  • お問い合わせ欄を足す (#1)

mainの履歴は「PR1つ=記録1つ」で読めます。途中の3つは、PRの画面に残ります。

末尾の(#1)はPRの番号。GitHubが自動で付ける

14 / 22
04 mainへ入れる

マージしたら、ブランチを消して手元のmainを最新にする。

GitHub

マージしたPRの画面

  • Delete branchで、GitHub上のadd-contactを消す
  • PRはMergedとして記録に残る
続けて手元で

GitHub Desktop

Current Branchでmainへ切り替える

  • Fetch originで、GitHubの最新を取ってくる
  • Pull originで、マージ後のmainを取り込む
  • 手元のadd-contactは、Branch → Deleteで消す

次の作業は、最新のmainから始めます。

消したブランチは、PRの画面のRestore branchで戻せる

15 / 22
まとめ

作る・見せる・確かめる・入れるの順で進める。

  1. ブランチを作る

    mainから作業用のブランチを作り、編集してcommitする。

  2. PRで見せる

    Publish branchで送り、Draftのプルリクエストを作る。

  3. 確かめる

    Draftのままレビューを受けて直し、Ready for reviewで検査を待つ。

  4. mainへ入れる

    検査が緑ならSquash and mergeする。ブランチを消し、手元のmainを最新にする。

迷ったら、いまのPRがDraftかOpenか、検査が緑か赤かを見ます。

16 / 22
05 プラグインの場合

Claude Codeでは、同じ流れを/gitが進める。

例:5slab/claude-plugins(5S LABのプラグイン)

この資料の操作

GitHub Desktopと画面

  • ブランチを作る:New Branch
  • 記録する:commit
  • 送る〜マージ:Publish branchから
  • 後片付け:Delete branch・Pull origin

Claude Codeに頼む

/gitの命令

  • /git start(専用のフォルダも作る)
  • /git save(手元に記録するだけ)
  • /git land(検査を待ってマージ)
  • /git cleanup(済んだブランチを消す)

送るところからマージまでは、/git landが受け持ちます。

17 / 22
05 プラグインの場合

/git land 1回で、止まる理由がなければマージまで進む。

送ってDraft PRを作る
指摘がなければ総評を書く
緑ならSquash and merge
重大な指摘が残る
検査が赤
この図をテキストで読む

状態遷移図。5状態・5遷移。 【状態】(★ = 焦点) 1. 手元のcommit(/git saveで記録済み)〔開始〕 2. Draft PR(AIがレビューする) 3. Open(review-gateなどの検査) 4. ★ マージ済み(mainに入った)〔終了〕 5. 止まって報告(直して/git landをもう一度)〔終了〕 【遷移】(A —[イベント [条件] / 動作]→ B) - 手元のcommit —[送ってDraft PRを作る]→ Draft PR - Draft PR —[指摘がなければ総評を書く]→ Open - Open —[緑ならSquash and merge]→ マージ済み - Draft PR —[重大な指摘が残る]→ 止まって報告 - Open —[検査が赤]→ 止まって報告 開始: 手元のcommit から始まる。 終了: マージ済み / 止まって報告 で終わる。

review-gateは、最新のcommitにレビューの総評(結果をまとめたコメント)があるかを確かめます。総評の後にcommitを足すと通りません。

重大な指摘:AIのレビューが「直すまで入れない」とした指摘

18 / 22
05 プラグインの場合

versionを上げてマージした時点で、配布が始まる。

  1. 版を上げる

    変更と同じPRで、plugin.jsonのversionを上げる。上げないと届かない。

  2. mainへ入れる

    /git landでmainへマージする。ここで配布が始まる。

  3. タグで記録する

    claude plugin tagで、どの版を出したかの印を付ける。例:5slab-core--v0.29.2

  4. 利用者が受け取る

    各自が/setup pluginsで更新し、次の起動から反映される。

プラグインの一覧(marketplace)が、mainを直接指しているためです。

アプリのリポジトリは、マージの後にstg(検証環境)・本番へ届ける

19 / 22
付録

用語集|ブランチとプルリクエスト

main(メイン)

みんなが使う基準のブランチ。直接は変えず、マージで入れる。

ブランチ

作業の流れを分ける線。mainもその1つ。

プルリクエスト(PR)

ブランチをmainへ入れたいという提案書。

Draft(ドラフト)

作業中の印。マージできず、Ready for reviewで外す。

Open・Closed

PRの状態の表示。Openは受付中、Closedはマージせずに閉じた提案。

20 / 22
付録

用語集|確かめてマージする

レビュー

変わった行を読み、指摘や承認をすること。人のほかAIにも頼める。

検査(チェック)

PRごとに自動で走るテストや確認。緑が合格、赤が不合格。

マージ

ブランチの変更をmainへ入れること。

Squash and merge

マージの方法の1つ。PRのcommitを1つにまとめてmainへ入れる。

21 / 22
付録

用語集|自動化とプラグイン

GitHub Actions

GitHubの上で、決めた作業を自動で動かすしくみ。検査もこれで動く。

review-gate

最新のcommitにレビューの総評があるかを確かめる、5S LABの検査。

プラグイン

Claude Codeにコマンドや確認の仕組みを足すひとまとまり。/gitもその1つ。

marketplace

プラグインの一覧。利用者はここから入れ、/setup pluginsで更新する。

22 / 22