Claude Codeでファイルを編集していると、「GitHubへプッシュしてよいですか」と確認されることがあります。
GitやGitHubに慣れていないと、何が送られるのか、許可してもよいのか分かりにくいところです。
Claude CodeとGitHubを連携すると、変更したファイルと内容を記録できます。修正がうまくいかなかった場合も、履歴を確認して以前の状態へ戻せます。
この記事では、MacからGitHubへログインし、作業中のフォルダを非公開リポジトリへ保存する手順を説明します。連携後によく使う操作と、Claude Codeに任せる範囲もあわせて説明します。
※GitHubやClaude Codeの画面・仕様は変わることがあります。最新の内容は、GitHub、Git、Claude Codeの公式ドキュメントで確認してください。
Claude CodeとGitHubを連携するとできること
Claude Codeは、GitHubと連携しなくても手元のフォルダで使えます。ただし、変更の履歴を残さずに作業を続けると、どこを直したのか分からなくなったり、修正前の状態へ戻しにくくなったりします。

GitとGitHubの役割は、次のように分かれています。
| 名前 | 役割 |
|---|---|
| Git | Macの中で、ファイルの変更履歴を記録する |
| GitHub | Gitで記録した履歴をオンラインに保存する |
Gitで管理するフォルダを「リポジトリ」と呼びます。変更をひとまとまりにして記録する操作が「コミット」、手元のコミットをGitHubへ送る操作が「プッシュ」です。
連携すると、次のことができるようになります。
- どのファイルを、いつ、どのように変更したか確認する
- Claude Codeの修正前の状態へ戻す
- 別のMacにリポジトリを取り込み、同じファイルで作業する
- 変更内容を確認してから、サイトやアプリの本体へ反映する
Claude Codeには会話中の変更を戻す/rewindもありますが、ターミナルのコマンドで行われた変更までは戻せない場合があります。作業の履歴を継続して残すには、Gitも使っておくほうが管理しやすくなります。
リポジトリは非公開で作成する

GitHubのリポジトリは、「Public(公開)」と「Private(非公開)」から選べます。
| 公開範囲 | 見られる人 | 主な用途 |
|---|---|---|
| Public | インターネット上の誰でも | 公開してよいコード、GitHub Pagesで公開するサイト |
| Private | 自分と招待した人 | 制作中のサイト、仕事のファイル、個人用のコード |
Claude Codeで作業するリポジトリは、基本的にPrivateで作成します。Publicにすると、現在のファイルだけでなく、過去のコミットも外部から確認できます。
ただし、PrivateにすればAPIキーやパスワードを保存してよいわけではありません。認証情報はリポジトリへ含めず、後述する.gitignoreで送信対象から外します。
GitHub Pagesで公開する場合
GitHub FreeでGitHub Pagesを使う場合は、公開リポジトリが対象です。有料プランでは、プランに応じて非公開リポジトリからも公開できます。
GitHub Pages用のリポジトリをPublicにする場合は、APIキー、パスワード、顧客情報などが含まれていないことを確認してください。
GitHub Pagesで公開する手順は、Claude Codeで作ったサイトをGitHub Pagesで公開する方法で紹介しています。
Claude CodeとGitHubを連携する手順
Macで作業中のフォルダをGitHubへ保存するまでの手順は、次の4つです。
最初に、Gitが入っているか確認します。ターミナルを開き、次のコマンドを実行します。
git --version
バージョン番号が表示されれば、Gitを使える状態です。インストールを求める画面が表示された場合は、画面の案内に沿って進めます。
続いて、GitHubをターミナルから操作する「GitHub CLI」をインストールします。Homebrewを使っている場合は、次のコマンドで追加できます。
brew install gh
gh --version
次のコマンドを実行します。
gh auth login
画面の案内に沿ってGitHub.comとHTTPSを選ぶと、ブラウザで認証できます。ログイン後は、次のコマンドで状態を確認します。
gh auth status
Logged in to github.comと表示されれば、ログインは完了です。
リポジトリを作成する前に、フォルダの一番上へ.gitignoreを用意します。このファイルには、Gitで記録しないファイル名を記載します。
.env
.env.*
*.key
APIキーやパスワードはコードへ直接書かず、.envなどの設定ファイルへ分けます。そのうえで.gitignoreに追加し、GitHubへ送られないようにします。
Claude Codeには、次のように依頼できます。
.envと秘密鍵をGitで管理しないように、.gitignoreを作成してください。
既存の設定がある場合は消さずに追記してください。
すでにコミットしたファイルは、.gitignoreへ追加しただけでは履歴から消えません。APIキーなどを誤ってコミットした場合は、記事後半の「APIキーをプッシュした場合」を確認してください。
APIキーをファイルへ保存しない方法は、Claude Codeと1Passwordをつなぐ方法で紹介しています。
作業中のフォルダでClaude Codeを開き、次のように依頼します。
このフォルダをGitで管理してください。
GitHubにPrivateのリポジトリを作成し、最初のコミットをプッシュしてください。
実行前に、コミットするファイルと実行するコマンドを見せてください。
.envなどの認証情報は含めないでください。
確認画面が表示されたら、gh repo createに--privateが含まれているかを確認します。--publicになっている場合は許可せず、Privateで作成するように伝えます。
自分で操作する場合は、Gitで最初のコミットを作成したあと、次のコマンドを実行します。
gh repo create リポジトリ名 --private --source=. --push
プッシュが終わったらGitHubでリポジトリを開き、次の2点を確認します。
- ファイルが表示されている
- リポジトリ名の近くに「Private」と表示されている
連携後によく使うGitの操作

普段の作業は、次の順番で進めます。
- 作業用のブランチを作成する
- Claude Codeでファイルを修正する
- 変更内容を確認してコミットする
- GitHubへプッシュする
- プルリクエストを作成する
- 内容を確認してmainへマージする
作業用のブランチを作成する
ブランチは、mainから分けて作る作業用の履歴です。Claude Codeに直接mainを変更させず、修正ごとにブランチを分けておくと、問題があった場合に取り込まずに済みます。
- 自分で操作する:
git switch -c fix-heading - Claude Codeに頼む:「mainではなく、新しいブランチを作って作業してください」
fix-headingの部分は、作業内容に合わせて変更します。
変更内容を確認してコミットする
コミットする前に、変更したファイルと差分を確認します。
git status
git diff
Claude Codeには、次のように依頼できます。
変更したファイルと内容を一覧で見せてください。
.envや個人情報を含むファイルがないことを確認してから、コミットしてください。
差分に問題がなければ、git addとgit commitで記録します。
GitHubへプッシュする
作業用のブランチをGitHubへ送ります。
- 自分で操作する:
git push origin fix-heading - Claude Codeに頼む:「現在のブランチをGitHubへプッシュしてください」
プッシュは手元の記録を外部へ送る操作です。確認画面に表示されたブランチ名とコマンドを見てから許可します。
プルリクエストを作成する
プルリクエストは、作業用ブランチの変更をmainへ取り込む前に、差分を確認するための画面です。
- 自分で操作する:
gh pr create --fill - Claude Codeに頼む:「現在の変更でプルリクエストを作成してください」
プルリクエストを開いたら、「Files changed」で変更内容を確認します。
内容を確認してマージする
マージは、作業用ブランチの変更をmainへ取り込む操作です。GitHubでプルリクエストを開き、差分と表示を確認してから「Merge pull request」を押します。
最終的なマージはClaude Codeへ任せず、自分で確認して実行する運用にしておくと、意図しない変更がmainへ入るのを防ぎやすくなります。
別のMacで作業を続ける
GitHub上のリポジトリを別のMacへ取り込む操作を「クローン」と呼びます。
gh repo clone ユーザー名/リポジトリ名
すでに取り込んでいるリポジトリを最新の状態にする場合は、作業を始める前にgit pullを実行します。
コミットした変更を取り消す
プッシュ後の変更を取り消す場合は、履歴を消すのではなく、変更を打ち消す新しいコミットを作成するgit revertを使います。
git log --oneline
git revert コミットID
Claude Codeには、「このコミットをrevertで取り消してください。履歴は削除しないでください」と依頼します。
Claude Codeに任せる操作と、自分で確認する操作

Claude Codeに任せる範囲は、GitHubへ送信するか、履歴を書き換えるかで分けると判断しやすくなります。
| 扱い | 操作 | 確認する理由 |
|---|---|---|
| 任せやすい | git status、git diff、ブランチ作成、コミット |
主に手元の履歴を確認・追加する操作 |
| 実行前に確認する | プッシュ、プルリクエスト作成、revert |
GitHub上の履歴やファイルに影響する |
| 自分で行う | mainへのマージ | 本体へ変更を取り込む操作 |
| 実行させない | 強制プッシュ、reset --hard、公開済み履歴の書き換え |
コミットや手元の変更を失う可能性がある |
「Gitの操作はすべて危険」というわけではありません。差分の確認やコミットはClaude Codeへ任せ、外部へ送る操作と本体へ取り込む操作で自分が確認する、と分けると使いやすくなります。
プッシュとマージの前に確認を挟む
Claude Codeの権限は、/permissionsから確認できます。v2.1.283以降のClaude Codeは、ターミナルとVS Codeで「Auto」モードから始まります。Autoモードでは、多くの操作をあなたの代わりに別のモデルが確認して進めるため、プッシュの前に毎回止まるとは限りません。
そこで、プッシュの前に必ず確認が入るように、権限のルールを設定しておきます。askに指定した操作は、Autoモードでも実行前に確認が表示されます。
プッシュは毎回確認し、強制プッシュやマージは実行させないようにする場合は、プロジェクト内の.claude/settings.jsonへ次のように設定します。
{
"permissions": {
"ask": [
"Bash(git push *)",
"Bash(gh pr create *)"
],
"deny": [
"Bash(git push --force *)",
"Bash(git reset --hard *)",
"Bash(git rebase *)",
"Bash(gh pr merge *)"
]
}
}
askに指定した操作は実行前に確認が入り、denyに指定した操作は拒否されます。Claude Codeの公式ドキュメントでは、複数のルールに一致した場合はdeny、ask、allowの順で判定されます。
ただし、コマンドの書き方を変えるとルールに一致しない場合があります。たとえばBash(git push *)は、git -C . pushのような別の書き方までは止めません。権限設定だけに頼らず、確認画面のコマンドも読んでから許可してください。
また、CLAUDE.mdに「勝手にプッシュしない」と書くことは、作業方針を伝えるうえでは役立ちますが、コマンドを機能として止める設定ではありません。実行を制限する場合は、permissionsを使います。
Claude Codeのほかの設定は、Claude Codeの初期設定で紹介しています。
リポジトリが非公開になっているか確認する
すでにリポジトリを作成している場合は、次のコマンドで公開範囲を確認できます。
gh repo view --json visibility
PRIVATEなら非公開、PUBLICなら公開です。
GitHubの画面では、リポジトリを開き、「Settings」→「General」→「Danger Zone」→「Change repository visibility」から変更できます。
公開から非公開へ変更しても、公開中に第三者がコピーしたファイルまでは削除できません。認証情報を公開した可能性がある場合は、リポジトリを非公開にするだけでなく、その認証情報を無効にします。
GitHub Pagesを無料プランで公開しているリポジトリを非公開へ変更すると、サイトの公開も停止します。変更前に、GitHub Pagesを使っていないか確認してください。
GitHub Actionsとの連携は必要な場合だけ追加する
GitHub ActionsとClaude Codeを連携すると、Issueやプルリクエストのコメントで@claudeと呼びかけ、修正やレビューを依頼できます。
公式ドキュメントでは、対象のリポジトリでClaude Codeを開き、/install-github-appを実行する方法が案内されています。リポジトリの管理権限が必要で、Claudeの利用料金とは別にGitHub Actionsの実行時間も使います。
手元のMacでClaude Codeを使い、変更履歴をGitHubへ保存するだけなら、この設定は必要ありません。まずは通常のGit連携から始めれば十分です。
APIキーやパスワードをプッシュした場合

APIキーやパスワードを含むファイルをGitHubへ送ってしまった場合は、最初にキーを無効にします。ファイルを削除したり、リポジトリをPrivateへ変更したりするだけでは、過去の履歴やコピーに値が残る可能性があります。
- キーを発行したサービスで、該当するキーを無効にする
- 必要であれば新しいキーを発行する
- 新しいキーを
.envなどへ保存し、.gitignoreの対象にする - 必要に応じて、Gitの履歴から該当ファイルを削除する
GitHubには、認証情報を検出するSecret scanningや、プッシュを止めるPush protectionがあります。ただし、利用できる範囲はリポジトリの種類やプランによって異なります。これらの機能が有効でも、.gitignoreとプッシュ前の差分確認は行います。
まとめ
Claude CodeとGitHubを連携すると、AIが変更したファイルの履歴を残し、必要なときに以前の状態へ戻せます。
- GitHub CLIを用意し、
gh auth loginでログインする - リポジトリはPrivateで作成する
.envや秘密鍵を.gitignoreへ追加する- mainではなく作業用ブランチで修正する
- プッシュ前に差分を確認し、マージは自分で行う
- 強制プッシュや履歴を書き換える操作は権限設定で止める
最初に行うのは、.gitignoreの確認とPrivateリポジトリの作成です。GitHubへ保存できたら、作業用ブランチで小さな変更を1つ行い、コミット、プッシュ、プルリクエストの順に試すと流れを確認できます。




