コンテンツにスキップ

1.1 pushまでの一連の流れ

この章では、Git を使った日常的な開発作業の 基本フロー を学んでいきます。
まずはここをしっかり理解しておくと、後の応用がぐっとスムーズになりますよ 🚀


まずは、作業を行うディレクトリを作りましょう。
作ったら、 そのディレクトリの中で、git init と打ってみてください。
これで準備は完了です。

コマンドを覚える前に、Git がどのようにファイルの履歴を管理しているかを把握しておきましょう。
Git には 「4つの場所」 があり、これから説明するコマンドは この場所の間でデータを移動させる操作 です。

flowchart LR
    A["🖥️ 作業ディレクトリ
(Working Directory)"] B["📋 ステージングエリア
(Staging Area / Index)"] C["💾 ローカルリポジトリ
(Local Repository)"] D["☁️ リモートリポジトリ
(Remote Repository)"] A -- "git add" --> B B -- "git commit" --> C C -- "git push" --> D D -- "git pull" --> A style A fill:#E8F5E9,stroke:#43A047,color:#1B5E20 style B fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style C fill:#FFF3E0,stroke:#FB8C00,color:#E65100 style D fill:#F3E5F5,stroke:#8E24AA,color:#4A148C
場所説明関連コマンド
作業ディレクトリエディタで開いているファイルそのもの
ステージングエリア次のコミットに含める変更を準備する場所git add で登録
ローカルリポジトリコミット履歴が保存される場所git commit で記録
リモートリポジトリGitHubなどの外部の共有リポジトリgit push で送信

ブランチとは、コミット履歴の流れに付けた 「名前付きのポインタ」 です。

たとえるなら、本の 「しおり」 のようなもの。
本(コミット履歴)自体はひとつですが、しおり(ブランチ)を複数はさむことで、異なるページ(時点)から読み進めることができます。

gitGraph
    commit id: "初期コミット"
    commit id: "README追加"
    branch develop
    checkout develop
    commit id: "開発環境セットアップ"
    branch feature/login
    checkout feature/login
    commit id: "ログインページ追加"
    commit id: "バリデーション追加"

チーム開発では、main(本番環境)と develop(開発用)という2つのブランチを基本として、 作業ごとに 作業ブランチ(feature ブランチ) を作成するのが一般的です。


実践:作業ブランチを作成する

Section titled “実践:作業ブランチを作成する”

Step 1:最新の develop を取得する

Section titled “Step 1:最新の develop を取得する”

まず、リモートの最新情報をローカルに反映させます。
これにより、他のメンバーの変更が手元に取り込まれます。

Terminal window
# develop ブランチに切り替え
git checkout develop
# リモートの最新を取得してマージ
git pull origin develop

Step 2:作業ブランチを作成して切り替える

Section titled “Step 2:作業ブランチを作成して切り替える”

develop ブランチを起点に、新しい作業ブランチを作成します。

Terminal window
# ブランチの作成と切り替えを同時に行う(よく使う!)
git checkout -b feature/add-login-page
# ↑ 上のコマンドは以下の2つと同じ意味です
git branch feature/add-login-page # ブランチを作成
git checkout feature/add-login-page # ブランチを切り替え

今どのブランチにいるかは、いつでも確認できます。

Terminal window
git branch
develop
* feature/add-login-page ← 「*」が現在のブランチ
main

Git 2.23 以降では、git switch コマンドも使えます。
checkout はブランチ切り替え以外の用途(ファイルの復元など)も兼ねているため、 ブランチ操作 専用switch が追加されました。

操作checkoutswitch
ブランチ切り替えgit checkout developgit switch develop
新規作成+切り替えgit checkout -b feature/xxgit switch -c feature/xx

Git を使いこなすうえで もっとも大切な習慣 は「今の状態を確認すること」です。
コマンドを打つ前後で状態を確認するクセをつけましょう 🔍

flowchart TD
    A["✏️ ファイルを編集した"] --> B{"状態を確認しよう"}
    B --> C["git status
今どうなっている?"] B --> D["git diff
何が変わった?"] B --> E["git log
履歴はどうなっている?"] C --> F["変更をステージング
git add"] D --> F F --> G{"ステージング内容を確認"} G --> H["git diff --staged"] H --> I["コミット
git commit"] I --> E style A fill:#FFF9C4,stroke:#F9A825,color:#F57F17 style C fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style D fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style E fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style F fill:#E8F5E9,stroke:#43A047,color:#1B5E20 style I fill:#FFF3E0,stroke:#FB8C00,color:#E65100

git status ─ 今の状態を確認する

Section titled “git status ─ 今の状態を確認する”

git status は、作業ディレクトリとステージングエリアの状態を表示します。
最も頻繁に使うコマンド です。

実践例:ファイルを編集したあとに status を確認

Section titled “実践例:ファイルを編集したあとに status を確認”

以下のシナリオを想定します。
login.html新規作成 し、style.css編集 した状態です。

Terminal window
git status
On branch feature/add-login-page
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
login.html
表示意味次にやること
Changes not staged for commit編集済みだがまだ add していないgit add でステージングへ
Changes to be committedadd 済みでコミット待ちgit commit で記録
Untracked filesGit がまだ追跡していない新規ファイルgit add で追跡開始
nothing to commitすべてコミット済みのクリーンな状態

git log ─ コミット履歴を確認する

Section titled “git log ─ コミット履歴を確認する”

git log は、コミットの履歴を 新しいものから順に 表示します。
誰が」「いつ」「何を」変更したかを確認できます。

Terminal window
git log
commit a1b2c3d (HEAD -> feature/add-login-page)
Author: Taro Yamada <taro@example.com>
Date: Fri Mar 20 10:30:00 2026 +0900
ログインページのHTMLを追加
commit e4f5g6h (origin/develop, develop)
Author: Hanako Suzuki <hanako@example.com>
Date: Thu Mar 19 17:00:00 2026 +0900
ヘッダーのデザインを修正
コマンド用途
git log --oneline各1行で簡潔に表示
git log --oneline --graphブランチの分岐・マージを図で表示
git log -n 5直近の5件だけ表示
git log --author="Taro"特定の人のコミットだけ表示
git log -- ファイル名特定ファイルの変更履歴を表示
Terminal window
git log --oneline --graph --all
* a1b2c3d (HEAD -> feature/add-login-page) ログインページのHTMLを追加
* e4f5g6h (origin/develop, develop) ヘッダーのデザインを修正
* i7j8k9l トップページを作成
* m0n1o2p (origin/main, main) 初期コミット

git diff は、具体的に 「どの行が変わったのか」 を表示します。
add / commit する前に、意図した変更だけが含まれているか確認するために使います。

flowchart LR
    WD["🖥️ 作業ディレクトリ"]
    SA["📋 ステージング"]
    LC["💾 最新コミット"]

    WD -- "git diff" --> SA
    SA -- "git diff --staged" --> LC
    WD -- "git diff HEAD" --> LC

    style WD fill:#E8F5E9,stroke:#43A047,color:#1B5E20
    style SA fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1
    style LC fill:#FFF3E0,stroke:#FB8C00,color:#E65100
コマンド比較対象
git diff作業ディレクトリ ↔ ステージングエリア
git diff --stagedステージングエリア ↔ 最新コミット
git diff HEAD作業ディレクトリ ↔ 最新コミット

style.css に変更を加えたあとに diff を実行した例です。

Terminal window
git diff
diff --git a/style.css b/style.css
index 1234567..abcdefg 100644
--- a/style.css
+++ b/style.css
@@ -10,6 +10,8 @@ body {
font-size: 16px;
}
+.login-form {
+ max-width: 400px;
+}
記号意味
--- a/style.css変更前のファイル
+++ b/style.css変更後のファイル
@@ -10,6 +10,8 @@変更箇所(10行目付近)
+(緑)追加された行
-(赤)削除された行
スペース(白)変更なし(前後の文脈表示)

add → commit → push の基本サイクル

Section titled “add → commit → push の基本サイクル”

状態確認のコマンドを学んだところで、いよいよ変更を記録して共有するフローを実践します 💪

flowchart LR
    subgraph "あなたのPC"
        A["✏️ ファイルを編集"]
        B["git add
変更をステージング"] C["git commit
ローカルに記録"] end subgraph "GitHub" D["git push
リモートに共有"] end A --> B --> C --> D style A fill:#FFF9C4,stroke:#F9A825,color:#F57F17 style B fill:#E8F5E9,stroke:#43A047,color:#1B5E20 style C fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style D fill:#F3E5F5,stroke:#8E24AA,color:#4A148C

Step 1:git add ─ 変更をステージングに登録

Section titled “Step 1:git add ─ 変更をステージングに登録”

git add は、「次のコミットに含める変更」 をステージングエリアに登録するコマンドです。

Terminal window
# 特定のファイルをステージング
git add login.html
# 複数ファイルを指定
git add login.html style.css
# 変更のあるすべてのファイルをステージング
git add .
# 変更内容を対話的に選択してステージング(一部だけaddしたい場合)
git add -p
Terminal window
git add login.html style.css
git status
On branch feature/add-login-page
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: login.html
modified: style.css

“Changes to be committed” に移動していれば、正しくステージングされています。
間違えた場合は git restore --staged <file> で取り消せます。


Step 2:git commit ─ 変更をローカルに記録

Section titled “Step 2:git commit ─ 変更をローカルに記録”

git commit は、ステージングエリアの内容を ローカルリポジトリに記録 するコマンドです。
ゲームでいう 「セーブポイント」 を作るイメージですね。

Terminal window
# メッセージ付きでコミット(最も一般的)
git commit -m "ログインページのHTMLとCSSを追加"
# エディタが開き、詳細なメッセージを書ける
git commit

良いコミットメッセージの書き方

Section titled “良いコミットメッセージの書き方”

コミットメッセージは 「将来の自分やチームメンバーへのメモ」 です。
何を、なぜ変更したかを簡潔に書きましょう。

✅ 良い例❌ 悪い例
fix: パスワードリセットのメール送信エラーを修正バグ修正した
feat: ユーザープロフィール画像のアップロード機能作業中

また、リモートリポジトリがGitHubの時、 body部(コミットメッセージの3行目以降)に Closes のようなキーワードを含めてください。

1 fix: パスワードリセットのメール送信エラーを修正
2
3 Closes #17

GitHubドキュメント - プルリクエストを課題にリンクする

Terminal window
git commit -m "feat: ログインページのHTMLとCSSを追加"
[feature/add-login-page a1b2c3d] feat: ログインページのHTMLとCSSを追加
2 files changed, 45 insertions(+), 2 deletions(-)
create mode 100644 login.html
Terminal window
git status
On branch feature/add-login-page
nothing to commit, working tree clean
Terminal window
git log --oneline -3
a1b2c3d (HEAD -> feature/add-login-page) feat: ログインページのHTMLとCSSを追加
e4f5g6h (origin/develop, develop) ヘッダーのデザインを修正
i7j8k9l トップページを作成

Step 3:git push ─ リモートに共有

Section titled “Step 3:git push ─ リモートに共有”

git push は、ローカルリポジトリのコミットを リモートリポジトリ(GitHub)に送信 するコマンドです。
これにより、チームメンバーがあなたの変更を確認できるようになります。

初回の push(ブランチをリモートに登録)

Section titled “初回の push(ブランチをリモートに登録)”

新しく作ったブランチを初めて push する場合は、リモートにブランチを作成する必要があります。

Terminal window
git push --set-upstream origin feature/add-login-page
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 1.23 KiB | 1.23 MiB/s, done.
remote: Create a pull request for 'feature/add-login-page' on GitHub by visiting:
remote: https://github.com/your-org/your-repo/pull/new/feature/add-login-page
* [new branch] feature/add-login-page -> feature/add-login-page
Terminal window
# upstream 設定済みなので、シンプルに push できる
git push

ここまでに学んだ内容を、実際の作業フローとしてまとめます 📝

flowchart TD
    S["🚀 作業開始"] --> A
    A["① git checkout develop"] --> K
    K["② git pull origin develop
developを最新化"] --> B B["③ git checkout -b feature/xxx
作業ブランチを作成"] --> C C["④ ファイルを編集
エディタで作業"] --> D D["⑤ git status / git diff
状態を確認"] --> E E["⑥ git add ファイル名
変更をステージング"] --> F F["⑦ git diff --staged
ステージング内容を確認"] --> G G["⑧ git commit -m 'メッセージ'
ローカルに記録"] --> H H["⑨ git log --oneline
履歴を確認"] --> I I["⑩ git push -u origin feature/xxx
リモートに共有"] --> J J["✅ 完了!PRを作成しよう"] style S fill:#E8EAF6,stroke:#3F51B5,color:#1A237E style J fill:#E8F5E9,stroke:#43A047,color:#1B5E20 style D fill:#FFF9C4,stroke:#F9A825,color:#F57F17 style G fill:#E3F2FD,stroke:#1E88E5,color:#0D47A1 style I fill:#FFF3E0,stroke:#FB8C00,color:#E65100
Terminal window
# ① develop を最新化
git checkout develop
git pull origin develop
# ② 作業ブランチを作成
git checkout -b feature/add-login-page
# ③ ファイルを編集(エディタで作業)
# ④ 状態を確認
git status
git diff
# ⑤ 変更をステージング
git add login.html style.css
# ⑥ ステージング内容を確認
git diff --staged
# ⑦ コミット
git commit -m "feat: ログインページのHTMLとCSSを追加"
# ⑧ 履歴を確認
git log --oneline -3
# ⑨ リモートに push
git push -u origin feature/add-login-page