GitHub CopilotやClaude Codeのようなコードを書くAIを使い始めると、変更の量が一気に増えます。料金表の数字を1つ頼んだだけなのに、別のファイルまで書き換わっていることもあります。そのときに何が変わったかを確かめて、まずければ戻せる状態を作るのがGitの役目です。
ここでは料金表の修正を例に、どの道具が何をするものかの整理、AIに頼むときの作業の流れ、AIが実行するコマンドで見るところ、鍵の扱いを順に見ます。読み終わると、コマンドを暗記していなくても、AIの変更を自分で確かめて受け入れるか戻すかを決められるようになります。
この記事の内容
先に答えると
AIの道具はコードを書くもの、Gitは変更の履歴を取るもの、GitHubはその履歴を預ける場所です。役割が違うので、どれか1つあれば他が要らなくなる関係ではありません。AIに直させるなら、作業の前に枝を分け、終わったら差分を見てからコミット(変更の保存)するだけで、失敗しても戻せるようになります。
- GitHub CopilotはGitHubの製品ですが、GitHub本体のプランとは別の契約です。Claude CodeとCursorはGitHubの製品ではありません
- Gitが要るのは、大きく変えられても戻せて、何が変わったかを差分で見られるからです
- 流れは、枝を作る、AIに頼む、差分を見る、コミット、プルリクエスト(Pull Request、PR)の順です
git push --force、git reset --hard、rm、公開リポジトリへの送信は、実行前に必ず止めて確かめます- 鍵はAIの作業フォルダに置かず、
.envも読ませません
3つの道具とGitの関係
言葉を先に分けます。Gitは変更の履歴を手元で記録する仕組みで、GitHubはその履歴を預けて共有するサービスです。リポジトリは履歴ごとのファイル一式を指します。AIの道具はどれも、ファイルの中身を書く側にいます。
| 名前 | 何をするものか | 提供元 | 料金(2026年11月時点・1ユーザー月) |
|---|---|---|---|
| GitHub Copilot | 入力の補完と、指示で複数のファイルを直す機能 | GitHub | Free $0(月2,000補完)、Pro $10、Pro+ $39、Max $100 |
| Claude Code | コードを読み、ファイルを直し、コマンドを実行する | Anthropic | Pro $20(年払いなら$17)、Max $100、Team 1席$25(年払いなら$20)。Freeには含まれない |
| Cursor | AIが組み込まれたコード編集アプリ | Cursor | Free $0、Plus $8、Premium $30、Teams $30から |
| Git | 変更の履歴を記録する | オープンソース | 無料 |
| GitHub | 履歴を預けて共有する | GitHub | Free $0、Team $4、Enterprise $21 |
Copilotの料金は個人向けで、会社で使うBusinessの価格は料金ページに出ていません。GitHub Enterpriseには Copilot の利用が含まれるという記載があります。含まれるのは利用の権利で、対象はアカウントチームを通じて契約する会社、利用枠は別で従量課金です。Enterpriseの会社はまず社内の契約を確かめます。一方、GitHubのFreeやTeamの会社は、GitHubの料金とは別に考えます。
サンプル料理教室のように、GitHubはFreeのままClaude Codeを使う組み合わせも問題なく成り立ちます。Claude Codeを使うのにGitHubのCopilotを契約する必要はなく、逆にCopilotを使うのにClaude Codeは要りません。

AIに直させるならGitが要る理由
理由は2つです。
1つ目は、戻せることです。AIは一度に複数のファイルを書き換えます。結果が気に入らなければ、コミットした時点へ戻せます。手作業の「menu_最新_修正2.html」のようなコピーは要りません。
2つ目は、差分で見られることです。差分はファイルの変更前と変更後の違いです。AIの「修正しました」という言葉だけでは、何を変えたのか分かりません。差分を見れば、変わった行が1行ずつ出ます。
Claude Codeには /rewind という巻き戻しの機能があり、ファイルの編集を会話の途中まで戻せます。便利ですが、公式も版管理の代わりではないとしています。コマンドで変わっただけのファイルは対象外で、長期の履歴や共同作業にはGitを使うようにと書かれています。
作業の流れ
料金表の「体験教室」を3,000円から3,500円に直す例です。
1. 枝を作る
ブランチ(枝)は、本番の main から分かれた作業用の流れです。AIに頼む前に分けておくと、失敗しても main は無傷です。
$ git switch -c fix-menu-price
Switched to a new branch 'fix-menu-price'
2. AIに頼む
「menu.html の体験教室の料金を3,500円に直して。他のファイルは変えないで」のように、対象と範囲を一緒に伝えます。
3. 差分を見る
ここが一番大事です。まず、どのファイルが変わったかを見ます。
$ git status --short
M index.html
M menu.html
M style.css
$ git diff --stat
index.html | 1 +
menu.html | 2 +-
style.css | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
頼んだのは menu.html だけなのに、3つ変わっています。AIの変更ではよくある形です。次に、中身を見ます。
$ git diff menu.html
diff --git a/menu.html b/menu.html
index a368e33..9d79935 100644
--- a/menu.html
+++ b/menu.html
@@ -1,4 +1,4 @@
<h1>料金表</h1>
-<p>体験教室 3,000円</p>
+<p>体験教室 3,500円</p>
<p>月4回 15,000円</p>
<p>夏の教室 5,000円</p>
- の行が消えた行、+ の行が足された行です。コマンドが苦手なら、GitHub DesktopやVS Codeの差分の画面でも同じものが色付きで見られます。
4. 要るものだけコミットする
git add は、次のコミットに入れるファイルを選ぶ操作です。頼んだものだけを選びます。
$ git add menu.html
$ git commit -m "料金表を修正"
$ git show --stat --format='%h %s' HEAD
7324906 料金表を修正
menu.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
頼んでいない変更は git restore index.html style.css で捨てます。捨てると戻せないので、中身を見て要らないと決めたものだけにします。
5. 送って、プルリクエストにする
git push -u origin fix-menu-price で枝をGitHubに送り、プルリクエストを作ります。プルリクエストは、枝の変更を main に合流させてよいか確かめる場所です。GitHubの「Files changed」タブで全体の差分をもう一度読み、問題なければ合流させます。代表だけで運用していても、この画面で読み直す工程は省きません。

こまめに保存して、保存を自動にする考え方
AIとの作業は、会話の区切りごとにコミットするのが基本です。1回のコミットが小さいほど、戻す範囲も小さくなります。実際に運用していると、1時間分をまとめて1コミットにした日に限って、途中までは良かった変更を取り出せずに困ります。
慣れてきたら、会話の区切りごとに保存と送信を自動にする考え方もあります。Claude CodeにはHooksという、動作の前後に決めたコマンドを動かす機能があります。ただし自動にするなら条件が3つあります。
- 作業用の枝でだけ動かし、
mainには送らない .gitignore(Gitの対象から外すファイルの一覧)に.envを入れてから始める- 細かいコミットが並ぶ前提で、最後はプルリクエストの全体の差分で読む
AIがコマンドを実行するときに見るところ
Claude Codeのように自分でコマンドを動かせる道具は、設定によって確認の出方が変わります。Claude Codeは、ターミナルとVS Codeの対話で最近の版を使うとAuto modeから始まります(2026年11月時点。claude -p、Agent SDK、管理者が無効にした環境などはManual modeです)。Auto modeは毎回人に聞く代わりに別のモデルが審査し、危ないと判断したものを止めます。強制pushも既定で止める対象です。毎回聞いてほしいときはManual modeに切り替えます(ターミナルなら Shift+Tab)。
許可の画面が出たら、そこに書かれているコマンドを読みます。公式も、承認の前に確かめるのは利用者の責任だと書いています。全部を読む必要はありません。次の語が出たら手を止めます。
| 出てきた語 | 何が起きるか | 見るところ |
|---|---|---|
git push --force、-f | GitHub側の履歴を手元の内容で上書きする | 本当に必要か。main に対してなら断る |
git reset --hard | コミットしていない変更を捨てる | 残したい変更がないか git status で先に見る |
git clean -f | Gitで管理していないファイルを消す | git clean -n で消える対象を先に見る |
rm、rm -rf | ファイルを消す | コミットしていないファイルは戻らない |
git add -A、git add . | 変更をまとめて選ぶ | .env や関係ないファイルが入らないか |
git add -f | .gitignore を無視して入れる | .env が対象なら断る |
gh repo create --public | 公開リポジトリを作る | 公開でよいものか |
gh repo edit --visibility | 公開範囲を変える | 非公開から公開にしていないか |
git push の送り先 | リポジトリと枝を決める | 公開リポジトリや他社のリポジトリに送っていないか |
git push --force の怖さは、手元で試すとよく分かります。外注エンジニアBの変更がGitHubにある状態で、代表が古い状態から作業して送ると、普通のpushは断られます。
$ git push origin main
! [rejected] main -> main (non-fast-forward)
ここでAIが「--force で送ります」と言ってきたら、断るところです。実行すると通ってしまいます。
$ git push --force origin main
+ 7d0d573...a7207b2 main -> main (forced update)
7d0d573 がBの変更で、GitHub側の履歴からは消えました。断られたときの正解は、git pull で相手の変更を取り込んでから送り直すことです。
rm も同じです。コミット済みのファイルは消しても戻せますが、コミット前のファイルは戻りません。images/ フォルダを消して戻すと、コミット済みの logo.png だけが戻り、作りかけの summer.png は消えたままでした。
$ rm -rf images
$ git status --short
D images/logo.png
$ git restore images
$ ls images
logo.png

道具の側とGitHubの側で止める
Claude Codeでは、設定ファイル .claude/settings.json の permissions で、止めるコマンド(deny)や必ず聞くコマンド(ask)を決められます。ask に Bash(git push *) を入れておくと、Auto modeでも送る前に確認が出ます。ただし公式も、書いた通りの形にしか当たらないと注意しています。git -C . push のような別の書き方には効きません。
確実なのはGitHub側で止めることです。保護ブランチ(枝を守る設定)を main に付けると、既定で強制pushが止まります。Freeの非公開リポジトリでは使えず、ProかTeam以上で使えます(2026年11月時点)。Freeのままなら、道具の設定と目視で止めることになります。
鍵を渡さない、.env を読ませない
AIに読ませた内容は、各社のサーバーへ送られる前提で考えます。パスワードやAPIキーが入った .env は読ませません。頼むときに、チャットへ鍵を貼らないのも同じ理由です。
ファイルを読ませない設定は道具ごとにあります。
| 道具 | 読ませない設定 | 公式の注意 |
|---|---|---|
| Claude Code | permissions.deny に Read(./.env) | cat などには効くが、ファイル名を指定しない grep -r のような読み方や、Pythonなどのスクリプトからの読み取りには効かない |
| GitHub Copilot | 「Content exclusion」の設定(Copilot Business・Enterpriseの機能。リポジトリや組織の管理者が設定する) | 間接的な読み取りは検知できないことがある。OSの権限の代わりにはならない |
| Cursor | .cursorignore | 完全な保護は保証されない。ターミナルからの読み取りは止められない |
Claude Codeの設定は次の形です。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
どの道具にも抜け道があるので、設定は補助です。本番の鍵はパスワード管理ツールに置き、AIが作業するフォルダには試験用の値だけを置くのが一番確実です。
非公開でも、何が渡るかは規約で確かめる
GitHubのリポジトリが非公開でも、AIの道具にファイルを読ませれば、その道具の提供元には内容が届きます。リポジトリの公開範囲と、AIの道具のデータの扱いは別の話です。
| 道具とプラン | 学習への利用(2026年11月時点の公式の記載) |
|---|---|
| Copilot Free・Pro・Pro+・Max | 入力や提案、コード片が学習に使われることがある。設定で止められる |
| Copilot Business・Enterprise | データ保護契約(DPA)のもとで扱う |
| Claude Code(Free・Pro・Max・Ultraの契約) | 利用者の設定で決まる。許可すると学習に使われ保存は5年、許可しないと保存は30日 |
| Claude Code(Team・Enterprise・API) | 既定では学習に使わない。保存は標準で30日 |
個人向けの契約を仕事に使うなら、最初にこの設定を見ます。顧客の情報が入るリポジトリを扱うなら、会社向けのプランと規約を読んでから使います。Cursorも含め、規約は変わるので、契約の前に各社の最新の文面で確かめます。
AIが作ったコミットの見直し方
AIにコミットまで任せたときは、後からでもまとめて確かめられます。
| 見るところ | 理由 |
|---|---|
| メッセージと変わったファイルが合っているか | 違っていると、後で探せず戻す範囲も誤る |
| 頼んでいないファイルが入っていないか | ついでの修正が混ざりやすい |
| 消された行に要るものがないか | - の行は見落としやすい |
| 変更の量が頼んだ内容に見合うか | 1行の修正で数百行変わっていたら疑う |
| 知らないライブラリが増えていないか | 依存先が増えると保守の負担も増える |
| 鍵やメールアドレスが書かれていないか | 履歴に残ると消すのが大変 |
| 実際に動かしたか | 画面で開いて確かめるまでは完了ではない |
コミットメッセージを任せるときは、AIの要約をそのまま信じないようにします。次はメッセージは料金表なのに、変わったのは style.css だけという例です。
$ git show --stat --format='%h %s' HEAD
93ae85c 料金表を修正
style.css | 1 +
1 file changed, 1 insertion(+)
まだ送っていなければ、git commit --amend -m "style.cssの見出しの色を修正" で書き直せます。AIには「日本語で、何を変えたかが分かる1行で。変更していないことは書かないで」と伝えておくと、ぶれが減ります。

Git自体をAIに頼む
コマンドを覚えなくても、Gitの操作そのものをAIに頼めます。言葉で頼んで、結果と実行したコマンドを見せてもらう形にします。
| 頼み方 | AIが動かすコマンドの例 | 変更の有無 |
|---|---|---|
| 昨日の夕方から何が変わったか見せて | git log --since | 見るだけ |
| このファイルだけ11月5日の版に戻して | git restore --source | ファイルが変わる |
| 今の差分を見せて。まだコミットしないで | git diff | 見るだけ |
| 今の変更を別の枝に分けて | git switch -c | 枝が増える |
| さっきのコミットを履歴を残したまま取り消して | git revert | コミットが増える |
.env が過去にコミットされていないか調べて | git log --all -- .env | 見るだけ |
「昨日の夕方から何が変わったか見せて」を11月7日に頼むと、たとえば次のような結果になります。
$ git log --since="2026-11-06 17:00" --oneline --stat
4b1c7a5 夏の教室を追加
menu.html | 1 +
1 file changed, 1 insertion(+)
f482645 問い合わせの電話番号を修正
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
「このファイルだけ11月5日の版に戻して」の場合は、その日の最後のコミットを探してから戻します。
$ git log --until="2026-11-05 23:59" -1 --format='%h %s' -- menu.html
c39a71d 料金表を修正
$ git restore --source=c39a71d menu.html
$ git diff
diff --git a/menu.html b/menu.html
index a368e33..6709914 100644
--- a/menu.html
+++ b/menu.html
@@ -1,4 +1,3 @@
<h1>料金表</h1>
<p>体験教室 3,000円</p>
-<p>月4回 15,000円</p>
-<p>夏の教室 5,000円</p>
+<p>月4回 13,000円</p>
料金が戻っただけでなく、11月6日に足した「夏の教室」の行も消えています。戻すというのはこういうことで、差分を見ないと気づけません。この段階ならまだコミットしていないので、git restore menu.html で元に戻せます。
頼むときは「消す操作の前には必ず何が消えるか見せて」と添えておくと、確かめる場面を作れます。
できないことと、その代わり
Gitが戻せるのはリポジトリの中のファイルだけです。AIがコマンドを動かせる以上、外で起きたことは戻せません。
| Gitで戻せないもの | 例 | 代わり |
|---|---|---|
| コミットしていない変更 | 作りかけの summer.png | こまめにコミットする |
| 送信済みのメール | AIが試しに send_mail.py を動かした | 試験用の宛先と鍵で動かす。本番の鍵を置かない |
| データベースや外部サービスの中身 | 本番の予約データの更新 | 試験環境で動かす。バックアップを取る |
| 公開してしまった内容 | 他人のクローンやフォーク | 鍵なら無効にして作り直す |
| サーバーで直接変えた内容 | 本番サーバーでの書き換え | リポジトリを経由して反映する運用にする |
AIの判断そのものもGitでは確かめられません。料金が合っているか、電話番号が正しいかは、お客さんに出す内容を知っている人が見るしかありません。ホームページの1行を直す程度なら、AIを使わず画面で直すほうが早い場面もあります。
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
main に直接コミットされていた | 枝を分ける前にAIが作業した | 送る前なら、先に git status でコミットしていない変更がないか見る(あればコミットか退避)。git branch fix-menu-price で今の状態に枝を付け、git reset --hard origin/main で main を戻す |
| 差分が何百行も出る | 字下げや改行まで整えられた | git diff --ignore-all-space --stat で実質の変更を見る。「整形はしないで」と伝えてやり直す |
.env がコミット候補に入った | .gitignore がない、または git add -f | git restore --staged .env で外し、.gitignore に足す |
.env を送ってしまった | 確かめずにpushした | 鍵を無効にして作り直す。手順は鍵の漏洩の記事にある |
pushが rejected で断られた | 相手の変更がGitHubにある | --force を使わず git pull してから送り直す |
| AIが「直しました」と言うのに直っていない | 別のファイルを直した、確かめていない | git diff を見て、ページを開いて確かめる |
| コミットメッセージが実際と違う | AIの要約が雑だった | 送る前なら git commit --amend -m で書き直す |
| 消えたファイルがある | AIが整理のつもりで消した | git status で確かめ、コミット済みなら git restore ファイル名 |
| 枝がどれか分からなくなった | 会話をまたいで作業した | git branch --show-current で確かめる。会話の最初に聞く習慣にする |
実際に運用していると、AIが原因の事故の多くは、差分を見ないままコミットした1回から始まります。流れの中で省かないのは、3番目の「差分を見る」だけで構いません。
次に読む
差分を見たうえで戻したくなったら Gitで元に戻す:revert・reset・restoreの違いと使い分け に、合流の前の確かめ方は プルリクエストとは:作り方・レビュー・マージの流れ にあります。AIにプルリクエストまで作らせるなら GitHub CLIの使い方:ghでできることと、gitとの違い も役に立ちます。.env を送ってしまったら、まず APIキーやパスワードをGitHubにpushしてしまったときの対応 を開いてください。
Copilotの料金と入れ方は GitHub Copilotとは:料金・使い方・無料でできる範囲 にあります。