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つのブランチが見えます。

By khino