Claude CodeとGitHubを連携する方法|非公開リポジトリに変更履歴を残す

Claude CodeとGitHubを連携して、非公開リポジトリに変更履歴を残す方法の記事のアイキャッチ

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でMacの中に変更の記録をつくり、プッシュでGitHubの非公開リポジトリへ保存し、別のMacにクローンやプルで取り込む流れを示した図
Gitが記録をつくり、GitHubが保存する。役割は分かれています。

GitとGitHubの役割は、次のように分かれています。

名前 役割
Git Macの中で、ファイルの変更履歴を記録する
GitHub Gitで記録した履歴をオンラインに保存する

Gitで管理するフォルダを「リポジトリ」と呼びます。変更をひとまとまりにして記録する操作が「コミット」、手元のコミットをGitHubへ送る操作が「プッシュ」です。

連携すると、次のことができるようになります。

  • どのファイルを、いつ、どのように変更したか確認する
  • Claude Codeの修正前の状態へ戻す
  • 別のMacにリポジトリを取り込み、同じファイルで作業する
  • 変更内容を確認してから、サイトやアプリの本体へ反映する

Claude Codeには会話中の変更を戻す/rewindもありますが、ターミナルのコマンドで行われた変更までは戻せない場合があります。作業の履歴を継続して残すには、Gitも使っておくほうが管理しやすくなります。

リポジトリは非公開で作成する

Publicはインターネットの誰でも過去のコミットまで見られ、Privateは自分と招待した人だけが見られることを比べた図。Privateでも.envやAPIキーは含めず、.gitignoreで送信対象から外すと添えている
Privateにしても、APIキーなどの認証情報は含めません。

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つです。

STEP
GitとGitHub CLIを確認する

最初に、Gitが入っているか確認します。ターミナルを開き、次のコマンドを実行します。

git --version

バージョン番号が表示されれば、Gitを使える状態です。インストールを求める画面が表示された場合は、画面の案内に沿って進めます。

続いて、GitHubをターミナルから操作する「GitHub CLI」をインストールします。Homebrewを使っている場合は、次のコマンドで追加できます。

brew install gh
gh --version
STEP
GitHubへログインする

次のコマンドを実行します。

gh auth login

画面の案内に沿ってGitHub.comとHTTPSを選ぶと、ブラウザで認証できます。ログイン後は、次のコマンドで状態を確認します。

gh auth status

Logged in to github.comと表示されれば、ログインは完了です。

STEP
GitHubへ送らないファイルを指定する

リポジトリを作成する前に、フォルダの一番上へ.gitignoreを用意します。このファイルには、Gitで記録しないファイル名を記載します。

.env
.env.*
*.key

APIキーやパスワードはコードへ直接書かず、.envなどの設定ファイルへ分けます。そのうえで.gitignoreに追加し、GitHubへ送られないようにします。

Claude Codeには、次のように依頼できます。

.envと秘密鍵をGitで管理しないように、.gitignoreを作成してください。
既存の設定がある場合は消さずに追記してください。

すでにコミットしたファイルは、.gitignoreへ追加しただけでは履歴から消えません。APIキーなどを誤ってコミットした場合は、記事後半の「APIキーをプッシュした場合」を確認してください。

APIキーをファイルへ保存しない方法は、Claude Codeと1Passwordをつなぐ方法で紹介しています。

STEP
非公開リポジトリを作成してプッシュする

作業中のフォルダでClaude Codeを開き、次のように依頼します。

このフォルダをGitで管理してください。
GitHubにPrivateのリポジトリを作成し、最初のコミットをプッシュしてください。

実行前に、コミットするファイルと実行するコマンドを見せてください。
.envなどの認証情報は含めないでください。

確認画面が表示されたら、gh repo createに--privateが含まれているかを確認します。--publicになっている場合は許可せず、Privateで作成するように伝えます。

自分で操作する場合は、Gitで最初のコミットを作成したあと、次のコマンドを実行します。

gh repo create リポジトリ名 --private --source=. --push

プッシュが終わったらGitHubでリポジトリを開き、次の2点を確認します。

  • ファイルが表示されている
  • リポジトリ名の近くに「Private」と表示されている

連携後によく使うGitの操作

mainから作業用ブランチを分け、Claude Codeで修正してコミットし、プッシュとプルリクエストを経て自分でマージする6段階の流れ。プッシュ前とマージ前に確認を挟んでいる
プッシュ前とマージ前の2か所で、自分の目で確認します。

普段の作業は、次の順番で進めます。

  1. 作業用のブランチを作成する
  2. Claude Codeでファイルを修正する
  3. 変更内容を確認してコミットする
  4. GitHubへプッシュする
  5. プルリクエストを作成する
  6. 内容を確認して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に任せる範囲を、任せやすい(緑)、実行前に確認する(黄)、自分で行う(橙)、実行させない(赤)の4段階に分けた図
送信するか、履歴を書き換えるかで、任せる範囲を分けます。

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キーをプッシュしたときの対応の順番。キーを無効にし、新しいキーを発行し、.envと.gitignoreで管理し、必要なら履歴から削除する
先にキーを無効にしてから、あとの手順に進みます。

APIキーやパスワードを含むファイルをGitHubへ送ってしまった場合は、最初にキーを無効にします。ファイルを削除したり、リポジトリをPrivateへ変更したりするだけでは、過去の履歴やコピーに値が残る可能性があります。

  1. キーを発行したサービスで、該当するキーを無効にする
  2. 必要であれば新しいキーを発行する
  3. 新しいキーを.envなどへ保存し、.gitignoreの対象にする
  4. 必要に応じて、Gitの履歴から該当ファイルを削除する

GitHubには、認証情報を検出するSecret scanningや、プッシュを止めるPush protectionがあります。ただし、利用できる範囲はリポジトリの種類やプランによって異なります。これらの機能が有効でも、.gitignoreとプッシュ前の差分確認は行います。

まとめ

Claude CodeとGitHubを連携すると、AIが変更したファイルの履歴を残し、必要なときに以前の状態へ戻せます。

  • GitHub CLIを用意し、gh auth loginでログインする
  • リポジトリはPrivateで作成する
  • .envや秘密鍵を.gitignoreへ追加する
  • mainではなく作業用ブランチで修正する
  • プッシュ前に差分を確認し、マージは自分で行う
  • 強制プッシュや履歴を書き換える操作は権限設定で止める

最初に行うのは、.gitignoreの確認とPrivateリポジトリの作成です。GitHubへ保存できたら、作業用ブランチで小さな変更を1つ行い、コミット、プッシュ、プルリクエストの順に試すと流れを確認できます。

Claude CodeとGitHubを連携して、非公開リポジトリに変更履歴を残す方法の記事のアイキャッチ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次