はじめに
Laravel 10をLaravel Sailでインストールした直後、phpMyAdminを追加する前の初期状態をGitHubのprivateリポジトリに保存しました。
本記事では、Laravel 10 + Laravel Sailの学習環境を例に、ローカルに存在するプロジェクトをGitHubのprivateリポジトリへ初回pushする手順をコマンドごとに整理します。
学習環境を安全に再現できる状態で保存することを意識した内容です。
前提
- Laravel 10をLaravel Sailでインストール済み
- PHP 8.2.30 / MySQL 8.4
- phpMyAdminはまだ追加していない
-
.envのポート番号など最低限の設定は完了済み - 作業環境はWSL上のUbuntu
- ローカルプロジェクトのパスは
~/projects/リポジトリ名
今回のゴール
Laravel Sailで作成したLaravel 10の初期環境を、phpMyAdmin追加前の状態でGitHubのprivateリポジトリに保存します。
手順
1. Laravelプロジェクト直下へ移動
cd ~/projects/リポジトリ名
2. .gitignore を確認
Laravelには最初から .gitignore が用意されています。
特に重要な記載は以下のとおりです。
.env
/vendor
/node_modules
/public/build
/public/hot
/public/storage
/storage/*.key
.env にはAPP_KEYやDB接続情報が含まれるため、GitHubには上げません。
一方、.env.example は環境再現用のテンプレートなので、GitHubに上げて問題ありません。
3. Git管理を開始
まず状態確認のコマンドを実行したところ、まだGit管理されていなかったためエラーになりました。
git status --short | grep .env
fatal: not a git repository (or any of the parent directories): .git
git init がまだだったため、以下でGit管理を開始します。
git init -b main
Initialized empty Git repository in /home/ユーザー名/projects/laravel10/.git/
-b main はデフォルトブランチ名を main に指定するオプションです。
4. .env がGit管理対象に入らないか確認
まず、.env を含むファイルがGit管理対象に入っていないか確認します。
git status --short | grep .env
?? .env.example
表示されたのは .env.example であり、.env ではないため問題ありません。
ただし、このコマンドは .env という文字列を含む .env.example も表示します。
そのため、実際の .env だけを確認したい場合は、次の正規表現を使います。
git status --short | grep -E '(^|\s)\.env$'
何も表示されなかったため、.env はGit管理対象に入っていません。
5. 全ファイルをステージング
git add .
ステージング後、再度 .env が含まれていないか確認します。
git status --short | grep -E '(^|\s)\.env$'
何も表示されなければ問題ありません。
6. 初回コミット
git commit -m "init: Laravel10 + Sail 環境構築完了"
[main (root-commit) 1b69fec] init: Laravel10 + Sail 環境構築完了
80 files changed, 11339 insertions(+)
コミット後、状態を確認します。
git status
On branch main
nothing to commit, working tree clean
7. GitHubでprivateリポジトリを作成
GitHubで新規リポジトリを以下の設定で作成します。
| 項目 | 設定値 |
|---|---|
| Repository name | laravel10 |
| Description | Laravel 10 + Laravel Sail の学習環境 |
| Visibility | Private |
| Add a README file | チェックしない |
| Add .gitignore | No .gitignore |
| Choose a license | No license |
README・.gitignore・licenseをGitHub側で生成しない理由は、ローカル側にすでにLaravelのファイル一式(READMEや.gitignoreを含む)が存在しているためです。GitHub側でこれらを生成すると、ローカルとの競合が発生します。
8. リモートリポジトリを登録
今回は最初にSSH形式で登録しました。
git remote add origin git@github.com:GitHubユーザー名/リポジトリ名.git
登録を確認します。
git remote -v
origin git@github.com:GitHubユーザー名/リポジトリ名.git (fetch)
origin git@github.com:GitHubユーザー名/リポジトリ名.git (push)
9. SSH接続時の確認
初回接続時に以下のメッセージが表示されます。
Are you sure you want to continue connecting (yes/no/[fingerprint])?
GitHubへのSSH初回接続確認なので yes と入力します。
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
これはGitHubの接続先情報がWSLの ~/.ssh/known_hosts に保存されたという意味です。
10. SSH認証エラーとHTTPSへの切り替え
続けて以下のエラーが発生しました。
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
原因は、GitHubにSSH公開鍵が登録されていない、または現在のWSL環境から利用できるSSH鍵が設定されていないためです。
今回はSSH設定を行わず、GitHubのHTTPS URLに切り替えて進めました。
11. リモートURLをHTTPSに変更
git remote set-url origin https://github.com/GitHubユーザー名/リポジトリ名.git
変更を確認します。
git remote -v
origin https://github.com/GitHubユーザー名/リポジトリ名.git (fetch)
origin https://github.com/GitHubユーザー名/リポジトリ名.git (push)
12. GitHubへpush
HTTPSでpushする場合、環境によってはGitHubの認証が求められます。
その場合は、GitHubの認証画面、またはPersonal Access Tokenを使用します。
git push -u origin main
Enumerating objects: 103, done.
Counting objects: 100% (103/103), done.
Delta compression using up to 12 threads
Compressing objects: 100% (85/85), done.
Writing objects: 100% (103/103), 74.04 KiB | 3.53 MiB/s, done.
Total 103 (delta 6), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (6/6), done.
To https://github.com/GitHubユーザー名/リポジトリ名.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
これでGitHubのprivateリポジトリへの初回pushが完了です。
-u origin main を指定することで、ローカルの main ブランチとリモートの origin/main が紐づきます。次回以降は git push のみで同じリモートへ送れます。
成功の確認
以下の出力が表示されていればpushは成功です。
To https://github.com/GitHubユーザー名/リポジトリ名.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
GitHub上で確認する際、以下のファイル・ディレクトリが存在していれば正常です。
上がっていてよいもの
app/
bootstrap/
config/
database/
public/
resources/
routes/
.env.example
compose.yaml
composer.json
README.md
上がっていたら問題があるもの
.env
vendor/
node_modules/
次回以降の基本操作
変更後は基本的に以下の3コマンドで管理できます。
git add .
git commit -m "コミットメッセージ"
git push
今回のポイント
- phpMyAdminを追加する前のLaravel Sailの初期状態をコミットした
-
.envがGit管理対象に入っていないことを確認してからコミットした -
.env.exampleは環境再現用テンプレートなのでGitHubに上げてよい - GitHub側ではREADMEや
.gitignoreを追加しない(ローカルと競合するため) - SSH公開鍵未登録でpushできなかった場合、HTTPS URLに切り替える方法がある
-
git remote set-url origin URLでリモートURLをあとから変更できる -
git push -u origin mainでローカルとリモートのブランチを紐づけた
まとめ
Laravel 10 + Laravel Sailの初期環境を、GitHubのprivateリポジトリに保存しました。
phpMyAdmin追加前の状態を残せたため、今後の学習環境を再現しやすくなりました。
今後はphpMyAdminの追加、Breezeの導入、学習用の各種変更などを、作業単位ごとにコミットして管理していく予定です。
関連記事
今回の初回push後、WSLからSSH接続できるようにするため、別記事でSSH鍵の作成とGitHubへの登録手順をまとめました。