Worktree

worktreeは、同じリポジトリの別のブランチを専用のフォルダーにチェックアウトするしくみです。エージェントごとにworktreeを分ければ、複数のエージェントが同じプロジェクトで同時に作業しても、互いのファイルを編集し合うことはありません。PATerminalは、worktreeの作成と新しいセッションとしての起動を一度に行います。

PATerminal v1.8.3 時点の内容です

worktreeを作成する

  1. リポジトリ内のペインで、ペインバーのWorktreeをクリックします(ブランチ一覧からも開けます)。
  2. 作成元でブランチかプルリクエストを選びます。
  3. 作成元ブランチ(またはプルリクエスト)を選び、新しいブランチの名前を入力します。
  4. 置き場所を選び、必要ならセッションメモも入力します。
  5. 作成を押します。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を作るときにも使われます。

解決しませんか?

FAQをご確認いただくか、お使いのOS、PATerminalのバージョン、試したことを添えてメールでお問い合わせください。すべてのメッセージに返信します。