Gitは、開発になくてはならないバージョン管理のツール。Laravelのバージョンをアップグレードがあるときは、フォルダーやファイルが入れ替わるためにGitで新ブランチを作成してから、更新作業を行います。しかし、問題はこの新ブランチは現在のマスターの複製であるため、以前のバージョンのファイルがすでに存在することです。
新しいバージョンと入れ替える1つの方法は、.git以外のフォルダーやファイルをすべて削除して、そこに新バージョンのLaravelを入れ直す。しかし、これを行うとGitで保存されている以前の変更やログぼ履歴が残ってしまい、新しくゼロからスタートができません。新しいバージョンでの開発は、あたかもまっさらからのように始めたい。
前回のLaravel 5.4のレポジトリ作成時にこの問題とぶつかり、どうしたら良いものやらと調査した結果、以下のような手順になりました。
masterを5.3ブランチと改名
現在は、masterにいます。
$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master
masterを5.3のブランチに改名します。
$ git branch -m master 5.3
リモートレポジトリ(github)にプッシュします。
$ git push origin 5.3
5.4ブランチを作成してmasterに改名
現在は、5.3のブランチにいます。
$ git branch -a * 5.3 remotes/origin/5.3 remotes/origin/HEAD -> origin/master remotes/origin/master
まずは、親なしの5.4ブランチを作成します。親なし--orphan
とすることによりブランチの変更やログの履歴が削除されます。この時点ではすべてのフォルダーやファイルはチェックアウトされていません。そして、それらをreset
で全部削除します。残っているのは、.gitのディレクトリのみです。
$ git checkout --orphan 5.4 $ git reset --hard
次に、ここにLaravel 5.4の初期ファイルを入れますが、.gitのディレクトリがあるためにエラーがでて入れることができません。それゆえに、一旦tmpのディレクトリに入れてから中身を移します。.env.exampleなどのドットファイルも移していることに注意してください。.gitを違うディレクトリに移してから、同ディレクトリに作成してもいいですね。そして、gitのディレクトリを戻す。
$ composer create-project --prefer-dist laravel/laravel tmp 5.4.* $ mv tmp/* tmp/.[^.]* . $ rmdir tmp
追加されたフォルダーやファイルをコミットします。そして、5.4ブランチをmasterに改名します。
$ git add . $ git commit -m 'Laravel 5.4 init' $ git branch -m master
そして最後にレポジトリ(github)にプッシュします。全部入れ替えるので --force
オプションが必要です。
$ git push -u origin master --force $ git branch -a * master remotes/origin/5.3 remotes/origin/HEAD -> origin/master remotes/origin/master
ということで、githubでは以下のようにドロップダウンに2つのブランチが見えます。