GitHubの使い方を学ぶために、Laravelプロジェクトでブランチ、マージを経験する
GitHubアカウントは既に作ってあるが、鍵認証をしていないのでそれをやっていく。
$ git config --global user.name "アカウント名"
$ git config --global user.email "メールアドレス"
・SSH Keyの設定
$ ssh-keygen -t rsa -C "メールアドレス"
これにより、
/Users/(あなたの名前)/.ssh
以下にid_rsa.pub,id_rsaの二つのファイルが作成される。
・リポジトリの作成
GitHubでリポジトリを作成。
右上の+アイコンをクリックし、プルダウンからNew repositoryを選択。
Hello-Worldという名前にする。
と、その前に、先ほど作った公開鍵(id_rsa.pub)を登録する。
$ cat /Users/(あなたの名前)/.ssh/id_rsa.pub
出力結果をGitHubのアカウントページ(Settings -> SSH and GPG keys -> New SSH key)に貼り付ける
・接続確認
$ ssh -T git@github.com
■出力結果
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,13.114.40.48' (RSA) to the list of known hosts.
Enter passphrase for key '/Users/honda/.ssh/id_rsa': (Keyを作った時のパスフレーズを入力)
Hi (アカウント名)! You've successfully authenticated, but GitHub does not provide shell access.
あらかじめダウンロードしておいたLaravelプロジェクトのディレクトリに移動し、gitを初期化する。
Laravel6.x(GitHubのページ)
$ git init
$ git add *
$ git commit -m "first commit"
リモートリポジトリ(GitHub上のリポジトリ)のアドレスを、名前(origin)と一緒に登録。
$ git remote add origin https://github.com/(アカウント名)/(プロジェクト名).git
$ git push origin master
これでリモートリポジトリへの反映が完了。
GitHubを確認すると、mainからmasterという名前のブランチが切り出されている。
(もしもリモートリポジトリのアドレスを間違えた場合は、以下のコマンドで設定を消去できる)
$ git remote remove origin
・LaravelのHelloWorldをデフォルトのページから自分が作成したページに変える。
$ git branch 001HelloWorld
$ git checkout 001HelloWorld
■出力結果
Switched to a new branch '001HelloWorld'
001HelloWorldというブランチをmasterから切り出し、チェックアウトする。
$ git branch
■出力結果
- 001HelloWorld
master
ブランチが切り替わっていることを確認。
Laravelプロジェクトを編集する。
routes/web.php
Route::get('/', function () {
return view('welcome');
});
+ Route::get('/index', function () {
+ return view('index');
+ });
また、resources/views/
にindex.blade.phpを作成。
中身は
<html>
<head>
<title>Hello World</title>
</head>
<body>
<div class="container">
Hello Laravel!!!
</div>
</body>
</html>
$ php artisan serve
でサーバを立て、localhost:8000/indexにアクセス。
ブラウザのタブに書かれた文字が「Hello World」になり、本文が「Hello Laravel!!!」になっていることを確認。
$ git status
$ git add *
$ git commit -m "add views/index.blade.php and edit routes/web.php"
$ git checkout master
001HelloWorldからチェックアウトする。当然だがindex.blade.phpファイルが消え、記述したルートも消えている。
001HelloWorldの変更をマージして取り込む。現在いるブランチはmasterであるため、そのままマージしてしまう。
$ git merge 001HelloWorld
■出力結果
Updating 4f16b16..9856d59
Fast-forward
resources/views/index.blade.php | 12 ++++++++++++
routes/web.php | 4 ++++
2 files changed, 16 insertions(+)
create mode 100644 resources/views/index.blade.php
マージが完了した。
・変更をGitHubに反映させる。
$ git push origin master
GitHubのページをリロードすると、変更が取り込まれている。
・ブランチの削除
ブランチの削除については下記の記事が参考になった。
Gitでローカルブランチを削除する
マージしていないブランチを削除しようとするとエラーになるという。
実際にやってみた。
$ git checkout -b testbranch
で、masterからtestbranchという名前のブランチを切り出す。
testbranch上のindex.blade.phpを編集。
resources/views/index.blade.php
<html>
<head>
<title>Hello World</title>
</head>
<body>
<div class="container">
Hello Laravel!!!
+ This is a TEST PAGE!!!!
</div>
</body>
</html>
$ git add *
$ git status
$ git commit -m "TEST"
ここで、
$ git branch --delete testbranch
とやると、
■出力結果
error: Cannot delete branch 'testbranch' checked out at '/Users/~/laravel-6.x'
消去できなかった。
上記の記事によると、マージしていないブランチを削除したい時にはそれ用のオプションがあるらしい。
$ git branch -D [ブランチ名]
がそれのようだ。
先ほど削除できなかったブランチに対してやってみる。
$ git checkout master
一旦チェックアウトしてから...
$ git branch -D testbranch
■出力結果
Deleted branch testbranch (was 45560e4).
成功。
$ git branch
で確認すると、きちんとtestbranchが消えている。
マージしていないブランチを削除することができた。
Discussion