Worktree
worktreeは、同じリポジトリの別のブランチを専用のフォルダーにチェックアウトするしくみです。エージェントごとにworktreeを分ければ、複数のエージェントが同じプロジェクトで同時に作業しても、互いのファイルを編集し合うことはありません。PATerminalは、worktreeの作成と新しいセッションとしての起動を一度に行います。
PATerminal v1.8.3 時点の内容です
worktreeを作成する
- リポジトリ内のペインで、ペインバーのWorktreeをクリックします(ブランチ一覧からも開けます)。
- 作成元でブランチかプルリクエストを選びます。
- 作成元ブランチ(またはプルリクエスト)を選び、新しいブランチの名前を入力します。
- 置き場所を選び、必要ならセッションメモも入力します。
- 作成を押します。worktreeのフォルダーで新しいセッションが開きます。
worktreeの置き場所
- リポジトリ外(既定)
- worktreeはリポジトリ名のフォルダーにまとめて作成されます(例:
~/worktrees/acme-app/feature-login)。絶対パス、~、..で指定できます。.gitignoreは変更しません。 - リポジトリ配下
- worktreeをリポジトリ内のフォルダーに作成します。そのフォルダーがまだignore対象でなければ、ルートの
.gitignoreに追記します(通常のソース変更として扱われます)。
ignore対象ファイルをコピーする
作成したばかりのworktreeには、gitignoreされているファイルが1つもないため、たいていそのままでは動きません。環境ファイル(gitignore対象)を引き継ぐ(既定)にしておくと、PATerminalが.env、node_modules、.venvなどのファイルを現在の作業ツリーから新しいworktreeへ、進捗を表示しながらコピーします。コピーしない場合は引き継がないを選びます。
プルリクエストからworktreeを作る
作成元にプルリクエストを選ぶと、オープン中のプルリクエストが一覧表示されます(お使いのghを利用します)。PATerminalはPRのブランチでworktreeを作り、セッションとして開きます。メインの作業ツリーで作業を続けながらPRのレビューや修正をするのに最適です。そのブランチのworktreeがすでにあれば、それを再利用します。
worktreeを管理する
Gitウィンドウのworktree一覧には、すべてのworktreeがブランチと状態(現在、メイン、ロック中、欠損)とともに表示されます。1つずつ削除するか、複数選んで選択したworktreeを削除を押します。worktreeを削除してもブランチは残ります。メインと現在のworktreeは削除できません。ローカルの変更が原因でGitが削除を拒否した場合は、強制削除を選べます。
worktreeの既定値
設定 → Worktreeの既定の置き場所で、既定の置き場所とignore対象ファイルをコピーするかどうかを設定します。ブランチ名を自動入力するをオンにすると、日付、時刻、短いランダムな文字列からブランチ名が作られます。これらの既定値は、Issueやペアモードからworktreeを作るときにも使われます。