Unityでマルチプラットフォーム開発を行なっているとき、
環境を別PFに変更する際はSwitch Platformを実行します。
しかしプロジェクトが大きくなっていけばいくほど、このSwitch Platformにかかる時間は増えていきます。
これに対する解決のアプローチとして、PFごとにリポジトリを作る方法があります。
$ git clone https://hoge.git ios
$ git clone https://hoge.git android
こうすることにより、PF切り替えをしなくてすみます。
しかしその一方で、リポジトリそのものを複数用意することで次のような欠点があります。
- git fetch等をそれぞれで行わなければならない
- リモートリポジトリを介さなければローカルリポジトリ間でやりとりできない
git worktreeを使用すると、このような欠点を避けつつ複数のプロジェクトを管理することができます
worktreeによるプロジェクト構築
github等にリポジトリ作成後、以下のようにしてプロジェクトを作成します。
空の状態から始めるのがポイントです。
$ mkdir hoge; cd hoge # リポジトリ用ディレクトリ作成
$ git init # 大元は空の状態にしたいので、cloneではなくinitから作る
$ git remote add origin https://hoge.git # 作成したリモートリポジトリのURLを設定
$ git fetch
$ git worktree add -b ios ./ios origin/master # hoge直下にiosというディレクトリを作成し、iosというブランチ名でmasterをチェックアウト
$ git worktree add -b android ./android origin/master
このようにすることで、ios、androidのPFごとにプロジェクトを作成することができました。
worktreeの利点としてリポジトリとしては単一なので、git fetch一回で済みますし、
iosでの変更をcherry-pickでandroidに取り込んだり、git stashで送ることもできます。
また、単一PFだったとしても、開発用・ビルド用と複数プロジェクト使用したい場合もあったりするので、
その際にも活躍すると思います。