9.

git リモートリポジトリ作成完全ガイド — GitHub/GitLab/自前 bare

編集
この記事の要点
  • GitHub / GitLab / Bitbucket の Web UI で New repository → URL を取得 → ローカルから git remote add origin
  • 自前ホスト派は git init --bare でサーバ側に空リポジトリ作成(SSH/HTTP どちらでも公開可能)
  • 初回 push は git push -u origin main-u で upstream 設定、以降 git push のみで OK)
  • README / .gitignore / LICENSE は最初に作っておくべき 3 点セット
  • リモート URL 変更は git remote set-url origin NEW、SSH↔HTTPS 切替時にも使う

リモートリポジトリとは

ローカル PC で作ったリポジトリは、そのままでは自分しか使えません。リモートリポジトリ(共有サーバ側のリポジトリ)を作って git push することで、複数人で共有 / バックアップ / CI 連携が可能になります。

代表的なホスティング:

サービス特徴
GitHub世界最大、OSS の集積地、Actions / Codespaces 統合
GitLabセルフホスト可、CI/CD が標準装備
BitbucketAtlassian。Jira/Confluence 連携
AWS CodeCommitAWS 内に閉じた運用
Azure ReposAzure DevOps の一部
Gitea / Gogs軽量 OSS セルフホスト
自前 git init --bareSSH サーバさえあれば構築可

GitHub での作成手順

  1. 右上の +New repository
  2. Repository name: myapp
  3. Description: 説明(任意)
  4. Public / Private: 公開範囲
  5. Add a README file: チェックすると即座にコミット 1 件入る
  6. Add .gitignore: 言語を選択(Node / Python / Laravel など)
  7. Choose a license: MIT / Apache-2.0 / GPL-3.0 など
  8. Create repository

作成後、URL を取得します:

# SSH (推奨)
git@github.com:user/myapp.git

# HTTPS (CI 等)
https://github.com/user/myapp.git

ローカルからリモートへの紐付け

# ケース A: ローカル既存 → 空リモートに push
cd ~/projects/myapp
git remote add origin git@github.com:user/myapp.git
git branch -M main           # ブランチ名 main に統一
git push -u origin main

# ケース B: README 等を入れて作った GitHub リポジトリを clone
git clone git@github.com:user/myapp.git
cd myapp

# ケース C: ローカルとリモートに別履歴があり一発で繋ぎたい
git remote add origin git@github.com:user/myapp.git
git pull origin main --allow-unrelated-histories
# コンフリクト解決 → commit → push
git push -u origin main

自前サーバに bare リポジトリで構築

SSH ログイン可能なサーバがあれば、git init --bare だけで Git リモートを立てられます。費用ゼロ、社内専用に最適。

# サーバ側 (例: git ユーザーで運用)
sudo useradd -m -s /bin/bash git
sudo su - git

mkdir -p /home/git/repos/myapp.git
cd /home/git/repos/myapp.git
git init --bare
# Initialized empty Git repository in /home/git/repos/myapp.git/

# 公開鍵を /home/git/.ssh/authorized_keys に追加
# (複数開発者で共有)

# クライアント側
git remote add origin git@server.example.com:/home/git/repos/myapp.git
git push -u origin main

HTTP / smart-http で公開

# Apache + git-http-backend で HTTP push/pull 可能
# /etc/apache2/conf-available/git.conf
SetEnv GIT_PROJECT_ROOT /var/git/repos
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

<Location /git>
  AuthType Basic
  AuthName "Git"
  AuthUserFile /etc/apache2/git.passwd
  Require valid-user
</Location>

# クライアント
git clone https://server.example.com/git/myapp.git

README / LICENSE / .gitignore

# 既存リポジトリにあとから足す場合
cat > README.md <<'EOF'
# myapp

## Setup
1. composer install
2. cp .env.example .env
3. php artisan key:generate

## Test
- php artisan test
EOF

# MIT ライセンス
curl https://raw.githubusercontent.com/licenses/license-templates/master/templates/mit.txt > LICENSE

# .gitignore (言語別テンプレートから)
curl https://raw.githubusercontent.com/github/gitignore/main/Laravel.gitignore > .gitignore

git add README.md LICENSE .gitignore
git commit -m "Add README, LICENSE, .gitignore"
git push

Organization での運用

GitHub Org の典型構成:

myorg/                           Organization
├── frontend                     リポジトリ
├── backend
├── docs
└── infra

メンバー権限:
- Owner       : Org 全体管理
- Member      : 通常メンバー
- Outside      : 外部協力者(特定リポジトリのみ)

Team:
- @myorg/dev        : 開発者全員(Write 権限を全リポジトリに)
- @myorg/ops        : 運用(infra リポジトリ Admin)
- @myorg/reviewers  : レビューワー(プルリク CODEOWNERS で自動アサイン)

SSH / HTTPS の切り替え

# 現状確認
git remote -v
# origin  https://github.com/user/myapp.git (fetch)
# origin  https://github.com/user/myapp.git (push)

# HTTPS → SSH に変更
git remote set-url origin git@github.com:user/myapp.git

# SSH → HTTPS に変更
git remote set-url origin https://github.com/user/myapp.git

# fetch と push で別 URL(push は SSH に強制)
git remote set-url --push origin git@github.com:user/myapp.git

# リモート追加・削除
git remote add upstream git@github.com:original/myapp.git
git remote remove upstream
git remote rename origin github

ミラーリポジトリ

GitHub のリポジトリを GitLab にも同期する / バックアップ用 — の場合はミラー pushを使います。

# ベアでクローン
git clone --mirror git@github.com:user/myapp.git
cd myapp.git

# 別リモートを追加
git remote set-url --push origin git@gitlab.com:user/myapp.git

# 全ブランチ・タグ・参照を push
git push --mirror

# 定期同期 (cron で)
*/15 * * * * cd /srv/mirror/myapp.git && git fetch -p origin && git push --mirror gitlab

Private / Public の判断

用途推奨
OSS 公開Public
業務コードPrivate(GitHub Free でも無制限)
勉強用Public でも Private でも
機密情報(.env 含む)絶対 Private(できれば履歴に含めない)

FAQ

Q: 間違って .env を push してしまった
A: 履歴から削除 (git filter-repo) + 必ずシークレットを無効化 (API キー再発行)。push 済の時点で公開済と考えるべき。

Q: 既に main と master の 2 ブランチがある
A: git push origin main 後 GitHub 設定で Default branch を main に変更 → git push origin :master で削除。

Q: 自前 Git サーバの認証は SSH 鍵で全部済ませたい
A: git ユーザの ~/.ssh/authorized_keys にメンバー全員の公開鍵を追加。Gitolite / Gitea を使うと権限管理が楽。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 用語一覧
  2. エラー一覧
  3. git本体のインストール(Linux)
  4. Linuxサーバーへのgit導入とクライアントのセットアップ
  5. リモートリポジトリをローカルリポジトリとしてクローンする方法
  6. リモートとローカルのリポジトリを同期(pull)する方法
  7. 設定の確認
  8. gitユーザー名とemailの設定
  9. リモートリポジトリの作成
  10. ローカルリポジトリの作成
  11. 新規ファイル/ディレクトリをインデックスに登録
  12. インデックスの登録状態を確認
  13. ローカルリポジトリの変更をコミット
  14. コミット履歴の確認
  15. クライアントからリモートリポジトリの接続設定、確認、削除
  16. リポジトリへのプッシュ
  17. リモートリポジトリからクライアントへのSSHクローン
  18. リモートとローカルの差分表示
  19. バージョンの確認
  20. プロキシの設定
  21. ローカルをリモートリポジトリの状態に戻す
  22. ブランチの作成, 一覧表示, 切り替え
  23. ブランチのマージと削除
  24. リベース
  25. .gitignoreの書き方
  26. .gitignoreの設定が反映されない場合
  27. 特定のファイルをgitの管理から外す方法
  28. 参照(ORIG_HEAD, HEAD, FETCH_HEAD)
  29. git rm [-r --cached] の取り消し
  30. 一部のディレクトリ/ファイルのみをリポジトリから復元する方法
  31. ローカルとリモートリポジトリの有無を同期
  32. pushの取消し方法
  33. マージツールの起動方法
  34. Gitで「MERGING」の状態

最近更新/作成されたページ