ローカルでGit管理しているソースコードをGitHubでもバージョン管理する方法は、大きく2通りあります。
以下で詳しく解説します。
- A)Web UIで空リポジトリを作成 → 既存ローカルをプッシュ(SSH等)
- B)GitHub CLI(
gh)で作成からプッシュまで行う
Push、PullなどのGit用語についてはこちらで記事にしています↓
0) 事前準備(初回のみ)
- GitHubのアカウント登録
- クライアントからGitHubへの認証方式の設定
SSH など(複数アカウント併用でも扱いやすい)。- SSH鍵を作成:
ssh-keygen -t ed25519 -C "you@example.com" - 公開鍵をGitHubアカウントに登録。
- SSH鍵を作成:
手順については、下記の記事で解説しています↓
A. Web UIで空リポジトリを作成 → 既存ローカルをプッシュ(SSH)
A-1) GitHubで空のリポジトリを作る
GitHubにログイン → 右上「+」→ New repository(または左上のNew)

Repository name を入力(Public/Privateは任意)→ Create repository

作成直後のページに「…or push an existing repository from the command line」という手順が表示されます(これを使います)。

公式:GitHub Docs – Creating a new repository
https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository
A-2) ローカルで初回プッシュ(既存プロジェクト)
プロジェクトディレクトリに移動します。
cd /path/to/your/projectまだ git init していない場合は、先に下記コマンドを実行してください。
git init && git add . && git commit -m "Initial commit"コマンド解説:
| ステップ | コマンド | 処理内容 | 結果 |
|---|---|---|---|
| 1 | git init | Gitリポジトリを初期化 | .gitフォルダ作成 |
| 2 | git add . | すべてのファイルをステージング (変更したファイルをインデックスに追加) | コミット準備完了 |
| 3 | git commit -m "Initial commit" | コミットを作成 | 履歴が1件生成される |
実行結果の例:プロジェクトフォルダに test.txt が配置されていた場合の例
Initialized empty Git repository in C:/projects/ai0w/sample/.git/
[master (root-commit) xxxxxxx] Initial commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test.txt2) 既存のGit履歴があるか確認(任意)
git status実行結果の例:
On branch master
nothing to commit, working tree clean既存のGit branchの履歴があるか確認(任意)
git branch -vv実行結果の例:
* master xxxxxxx Initial commit3) リモートoriginをSSHで登録(REPO_NAME/OWNERはご自身のものに置換してください)
git remote add origin git@github.com:OWNER/REPO_NAME.git4) デフォルトブランチ名をmainに(必要に応じ)
git branch -M main5) 初回プッシュ(追跡設定も同時に)
git push -u origin main実行結果の例:
Enter passphrase for key '/c/Users/xxxxx/.ssh/id_ed25519':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 207 bytes | 207.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To github.com:OWNER/REPO_NAME.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.GitHubで確認すると、ローカル環境で作成したファイルが、リポジトリに登録されています。

- 公式:
GitHub Docs – Managing remote repositories
https://docs.github.com/en/get-started/git-basics/managing-remote-repositories - GitHub Docs – Pushing commits to a remote repository
https://docs.github.com/en/get-started/using-git/pushing-commits-to-a-remote-repository
B. GitHub CLI(gh)で作成からプッシュまで行う
B-1) gh をインストール & ログイン
GitHub CLI(gh)をインストールします。
# インストール方法はOSごとに異なります(例:Windows)
# winget install --id GitHub.cli
# インストール方法はOSごとに異なります(例:macOS)
# brew install ghWindowsの場合のインストール手順の詳細は下記に記載しています↓
GitHubにCLIでログイン(対話式)します。
gh auth login
# → GitHub.com / HTTPS or SSH / プロトコル選択 / ブラウザ認証 などを対話で設定- 公式:
GitHub CLI – 公式サイト
https://cli.github.com/ - GitHub Docs – GitHub CLI quickstart
https://docs.github.com/en/github-cli/github-cli/quickstart
B-2) 既存ローカルから新規GitHubリポジトリを作ってプッシュ
プロジェクトフォルダに移動します。
cd /path/to/your/projectまだ git init していない場合は、先に下記コマンドを実行してください。
git init && git add . && git commit -m "Initial commit"コマンド解説:
| ステップ | コマンド | 処理内容 | 結果 |
|---|---|---|---|
| 1 | git init | Gitリポジトリを初期化 | .gitフォルダ作成 |
| 2 | git add . | すべてのファイルをステージング | コミット準備完了 |
| 3 | git commit -m "Initial commit" | コミットを作成 | 履歴が1件生成される |
対話式で質問に回答して初回pushを行う。
gh repo create実行結果の例:

“Push an existing local repository to GitHub” を選択
# 質問に回答すると、初回pushを行います。
例:
? What would you like to do? Push an existing local repository to github.com
? Path to local repository (.) C:\projects\ai0w\sample
? Path to local repository C:\projects\ai0w\sample
? Repository name sample
? Description sample project
? Visibility Private上記で行ったgh repo createの代わりに、一度のコマンドで実行するには、次のコマンドを実行します。
OWNER/REPO_NAMEはご自身の環境に合わせて変更してください。
gh repo create OWNER/REPO_NAME --source=. --private --remote=origin --push- 公式:
GitHub Docs – Adding locally hosted code to GitHub (gh)
https://docs.github.com/en/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github - GitHub CLI Manual –
gh repo create
https://cli.github.com/manual/gh_repo_create
トラブルシューティング(公式リンク)
- originが既にある/URLを変えたい
(例:HTTPS → SSH に切り替え、リポジトリを移転したので新URLに更新、など)
→git remote -vで確認、git remote set-url origin NEW_URLで変更。
公式:
GitHub Docs – Managing remote repositories
https://docs.github.com/en/get-started/git-basics/managing-remote-repositories - SSHは通るのに毎回パスフレーズを聞かれる
→ macOSはUseKeychain yes、Windowsはssh-agentを自動起動、Linuxはssh-agent+ssh-add。
公式:
Working with SSH key passphrases
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases
Git操作体系まとめ
| 用語 | 意味 | 備考 |
|---|---|---|
| ローカルリポジトリ | あなたのPC上の .git フォルダを含むプロジェクト | Gitの基本単位 |
| リモートリポジトリ | GitHubなどのサーバー上のコピー | 複数人で共有するための場所 |
| Git | 分散型バージョン管理ツール(ローカル操作中心) | git コマンドで操作 |
| GitHub | Gitリポジトリをホスティング+レビュー管理するWebサービス | gh コマンドやブラウザで操作 |
分類別に:どこで実行する/どこに影響する/代表コマンド(または操作)
- 🖥️=ローカルリポジトリ(自分のパソコン)
- ☁️=リモートリポジトリ(GitHubなど)
主に次の3パターンとなります。
- A)ローカルで行う操作(Git コマンド)
- B)リモートリポジトリ(GitHubなど)とのやり取り(Gitコマンド経由)
- C)リモートリポジトリ(GitHubなど)を操作(CLI・Web・API)
A)ローカルで行う操作(Git コマンド)
対象:自分のPC上の「ローカルリポジトリ」
影響範囲:自分の環境のみ。GitHubには影響しない。
| 目的 | コマンド例 | 実行場所 | 影響範囲 | 補足 |
|---|---|---|---|---|
| Gitの初期化 | git init | 🖥️ | 自分のPC内 | 新しくGit管理を開始 |
| ファイルの変更をステージング | git add . | 🖥️ | 自分のPC内 | 変更を「次のコミット候補」に追加 |
| コミット(履歴保存) | git commit -m "メッセージ" | 🖥️ | 自分のPC内 | 履歴を確定(GitHubには未送信) |
| 状態確認 | git status, git log, git diff | 🖥️ | 自分のPC内 | 現在の変更・履歴・差分を確認 |
| ブランチ作成 | git switch -c feature/x | 🖥️ | 自分のPC内 | 新しい作業ブランチを作成 |
| ブランチ切替 | git switch feature/x | 🖥️ | 自分のPC内 | 作業ブランチを変更 |
| ブランチ削除 | git branch -d feature/x | 🖥️ | 自分のPC内 | 不要ブランチを削除(ローカルのみ) |
| マージ(統合) | git merge main | 🖥️ | 自分のPC内 | 他ブランチの変更を統合 |
| Rebase(履歴を並べ直し) | git rebase main | 🖥️ | 自分のPC内 | 履歴を直線的に整える(再書き換え) |
| 作業一時退避 | git stash, git stash pop | 🖥️ | 自分のPC内 | 作業内容を一時保存・復元 |
| タグ作成 | git tag v1.0.0 | 🖥️ | 自分のPC内 | リリースなどの節目をマーク |
| リモート設定 | git remote add origin <URL> | 🖥️ | 自分のPC設定 | GitHubとの接続先を登録 |
| リモートURL変更 | git remote set-url origin <URL> | 🖥️ | 自分のPC設定 | HTTPS⇔SSHの切り替えなど |
※main、origin 、feature/x、v1.0.0などはコマンドの例で記載していますが、任意です。
B)GitHub(リモート)とのやり取り(Gitコマンド経由)
対象:ローカルとGitHubの両方を操作する
影響範囲:GitHub上のリポジトリ(リモートリポジトリ)にも反映
| 目的 | コマンド例 | 実行場所 | 影響範囲 | 補足 |
|---|---|---|---|---|
| GitHubの内容を取得 | git fetch originoriginは例で任意 | 🖥️ → ☁️ | ローカルにGitHubの更新を取得(反映はまだ) | |
| 更新を反映 | git pull --rebase origin mainorigin mainは例で任意 | 🖥️ ↔ ☁️ | GitHubの最新履歴をローカルに統合 | |
| 自分の変更をアップロード | git push -u origin feature/x | 🖥️ → ☁️ | ローカル変更をGitHubに送信 | |
| ブランチ削除(リモート側) | git push origin --delete feature/x | 🖥️ → ☁️ | GitHub上のブランチを削除 | |
| リモート一覧確認 | git remote -v | 🖥️ | 自分の設定(GitHub接続情報) | 接続URL確認 |
| 強制更新(安全版) | git push --force-with-lease | 🖥️ → ☁️ | Rebase後などで履歴を再送信(他人の変更は保護) |
※main、origin 、feature/x、v1.0.0などはコマンドの例で記載していますが、任意です。
C)GitHubサービスを操作(CLI・Web・API)
対象:GitHub上の「リモートリポジトリ」「PR」「Issue」など
影響範囲:Web上のコラボ・レビュー・設定に反映される。
| 目的 | GitHub CLI(gh) | GitHub Web/API | 影響範囲 |
|---|---|---|---|
| GitHubにリポジトリ作成 | gh repo create | Webの「+」→ New repository | GitHub上に新しいリポジトリを作成 |
| リポジトリ取得 | gh repo clone <user>/<repo> | WebでURLをコピーしてgit clone | ローカルにGitHubリポジトリをコピー |
| Pull Request作成 | gh pr create | Webの「New Pull Request」 | mainへ統合を提案 |
| PRレビュー・マージ | gh pr review --approve, gh pr merge | PR画面 → Merge/Squash/Rebase | GitHub上の履歴に直接反映 |
| Issue作成 | gh issue create | Issues → New issue | バグ・要望などを共有 |
| リリース作成 | gh release create <tag> | Releases → Draft a new release | GitHub上の公開バージョン作成 |
| Actionsログ確認 | gh run listgh run view | Actions タブ | CI/CD実行結果確認 |
| シークレット設定 | gh secret set NAME | Settings → Secrets | Actionsや環境変数の管理 |
| ブランチ保護設定 | — | Settings → Branches → Rules | レビュー必須・CI必須など制御 |
| メンバー管理 | — | Settings → Collaborators | リポジトリへのアクセス権を管理 |
補足
GitHubのブランチを追加・削除する操作
| 目的 | コマンド例 | 実行場所 | 影響範囲 | 補足 |
|---|---|---|---|---|
| 新しいブランチをGitHub上に追加(公開) | git push -u origin feature/new-branch | 🖥 ローカル(Gitコマンド) → GitHub(リモート) | GitHub上にブランチが作成される | ローカルで git switch -c feature/new-branch してから push するのが一般的。-u で追跡設定。 |
| GitHub CLIで新規ブランチ作成 | gh api repos/:owner/:repo/git/refs -f ref='refs/heads/feature/new-branch' -f sha=$(git rev-parse HEAD) | 🖥 ローカル端末(GitHub CLI) | GitHub上に直接ブランチが追加される | ghはREST APIを呼び出してリモート上にブランチを作成。自動で切り替えは行わない。 |
| ブランチ削除(GitHub上) | git push origin --delete feature/old-branch | 🖥 ローカル(Gitコマンド) → GitHub(リモート) | GitHub上の指定ブランチを削除 | main などの保護ブランチには適用不可。権限が必要。 |
| GitHub CLIでブランチ削除 | gh api -X DELETE repos/:owner/:repo/git/refs/heads/feature/old-branch | 🖥 ローカル端末(GitHub CLI) | GitHub上のブランチを直接削除 | REST API経由で削除する方法。保護ルールがある場合は拒否される。 |
| Web画面でブランチ削除 | (Web)リポジトリ →「Branches」→ 対象ブランチ右側「Delete」 | 🌐 Webブラウザ | GitHub上のブランチを削除 | Merge済みブランチはPR画面でも削除ボタンが表示される。 |
| デフォルトブランチ変更(mainなど) | — | 🌐 Webブラウザ Settings → Branches → Default branch | GitHubのデフォルト設定を変更 | 新規PRやClone時のベースブランチが変わる。 |
※main、origin 、feature/x、feature/new-branch、v1.0.0などはコマンドの例で記載していますが、任意です。
補足:ローカルとの関係
| 操作 | ローカルに影響 | GitHubに影響 |
|---|---|---|
git switch -c new-branch | ✅ 新しいブランチがローカルに作成 | ❌ まだGitHubには存在しない |
git push -u origin new-branch | ✅ ローカル追跡設定 | ✅ GitHubにもブランチが追加 |
git push origin --delete old-branch | ❌ ローカルは残る | ✅ GitHubのブランチが削除 |
git branch -d old-branch | ✅ ローカルのブランチ削除 | ❌ GitHubには影響なし |
※new-branch、old-branchなどはコマンドの例で記載していますが、任意です。
よく使われるブランチ命名規則 *慣習的な命名例、任意の文字列でOK
| 種類 | 例 | 意味 / 用途 |
|---|---|---|
main / master | main | 正式版・本番運用ブランチ |
develop | develop | 開発統合ブランチ |
feature/* | feature/add-login, feature/chat-ui | 新機能の開発用ブランチ |
fix/* | fix/typo, fix/api-bug | 不具合修正 |
hotfix/* | hotfix/security-patch | 緊急修正(本番即時対応) |
release/* | release/v1.2.0 | リリース準備(バージョンごと) |
experiment/* | experiment/new-idea | 試験的な実装や実験コード |
docs/* | docs/readme-update | ドキュメント修正・補足 |
GitHub の「Branches」一覧でも feature/, fix/ ごとにまとまるので管理が楽です。
自動ルール(CI/CDやPRテンプレート)に組み込みやすい
GitHub ActionsやCI設定では、
「feature/*ブランチでpushされたときにテストを実行」
など、パターン指定で自動処理できます。
例(.github/workflows/test.yml):
on:
push:
branches:
- 'feature/*'参考
公式ドキュメント:
Git – 基本操作リファレンス
https://git-scm.com/docs
コメント