~/Github/FVCOM/ の FVCOMリポジトリを対象に,worktreeの使い方の備忘録です.v5.1.0-dev がデフォルトブランチで,これをベースに機能追加用の恒久ブランチ uk-fabm/v5.1.0-dev を作成し,localでは./Github/FVCOM/branches/uk-fabm-v5.1.0-devディレクトリをworktreeとして運用します.
cd ~/Github/FVCOM
# 念のため最新情報を取得
git fetch --all --prune
ここで,.gitignoreに/branches/を追記しておきます.
# ~/Github/FVCOM/.gitignore に追加
/branches/
# v5.1.0-dev を起点に、uk-fabm/v5.1.0-dev ブランチを新規作成しつつ
# worktree を ~/Github/FVCOM/branches/uk-fabm-v5.1.0-dev に作る
git worktree add -b uk-fabm/v5.1.0-dev branches/uk-fabm-v5.1.0-dev v5.1.0-dev
# 確認
git worktree list
# → ルート(=v5.1.0-dev) と branches/uk-fabm-v5.1.0-dev(=uk-fabm/v5.1.0-dev) が並ぶはず
# 以後の作業は新しいワークツリーへ
cd branches/uk-fabm-v5.1.0-dev
# 初回だけ upstream 設定(未作成のリモートブランチを作る)
git push -u origin uk-fabm/v5.1.0-dev
以上で準備は終わりです.
この状態で~/Github/FVCOM/に移動すれば,v5.1.0-devブランチになっています.以下のように確認すると,*が現在のブランチで,+がworktreeのブランチ(ただし,現在のブランチではない)であることを示しています.他のブランチが存在する場合で,worktreeのブランチでなければこれらのマークは付きません.
$ git branch
+ uk-fabm/v5.1.0-dev
* v5.1.0-dev
~/github/FVCOM/branches/uk-fabm-v5.1.0/に移動すれば,uk-fabm/v5.1.0-devブランチになっています.このときは以下のようになり,現在のブランチに*が付いています.このようにディレクトリを移動するだけでブランチが切り替わることになります.git pushすればremoteでは通常のブランチとしての運用になります.
$ git branch
* uk-fabm/v5.1.0-dev
+ v5.1.0-dev
featureブランチを作成
worktreeでfeatureブランチを作成するには通常通りです.
cd ~/Github/FVCOM/branches/uk-fabm-v5.1.0-dev
# feature ブランチ uk-fabm-couplingを作成
git switch -c feature/uk-fabm-coupling
# 作業後にpush.2回目以降はgit pushのみでOK
git push -u origin feature/uk-fabm-coupling
参照用の tag を打つ
v5.1.0-devブランチに my51_base というタグを打っておきます.こうすると,uk-fabm/v5.1.0-dev ブランチに分岐したときのbaseの状態の参照が簡単にできます.
cd ~/Github/FVCOM
git tag my51_base
# 確認します
git tag -l
不要になったら
上で作成したworktreeが不要になったら,削除できます.
cd ~/Github
git worktree remove branches/uk-fabm-v5.1.0-dev
このブランチ自体を削除したいときは通常通りです.
git branch -D uk-fabm/v5.1.0-dev