Gitワークツリー
並列タスクのために独立したチェックアウトを作成し、作業が終わったらそれらをマージ、公開、または削除する。
Gitワークツリーは、同じリポジトリ内のタスクに別々のワークディレクトリを提供します。Dreamはそれらを別のプロジェクトとして開き、それぞれに独自のチャットとツールを提供します。アグエントが互いに影響を受けずに独立して編集する必要がある場合にワークツリーを使用します。
ワークツリーを作成する#
Gitリポジトリでベースリファレンスがコミットされたプロジェクトから始める。
- チャットの下にブランチスイッチャーを開く。
- 新しいワークツリーを選びます。
- 新しい ブランチ に名前を入力してください。たとえば
fix-settings-persistence。 - 基本参照 を開始するためのコミットまたはブランチに設定してください。たとえば
main。 - ワークツリーの作成をクリックします。
Dreamはチェックアウトを作成し、そのプロジェクトを開きます。タスクを送信する前に、チャットの下にあるワークツリーのブランチを確認してください。このプロジェクトにおけるコマンドおよびエージェントの編集は新しいディレクトリを使用します。
ベースリファレンスはあなたのローカルリポジトリに存在しなければなりません。新しいリモートコミットが必要な場合は、ワークツリーを作成する前に通常のGitワークフローを使ってそれらを取得してください。
会話をワークツリーに持ち込む#
メッセージから このメッセージから続ける… → 新しいワークツリー を選択する。Dreamはそのメッセージまでの会話を取り込み、現在のブランチをベースとしており、新しいブランチ名を生成する。
アグエントが以前の議論を継続する場合にこのショートカットを使用してください。カスタムのベースとブランチ名を選択する必要がある場合は、ブランチスイッチャーのワークフローを使用してください。会話の分岐を参照してください。メッセージをコピーする場合とファイルをコピーする場合の違いについて。
WorktreeはコミットされたGitの履歴から始まり、元のプロジェクトにおける未コミットの変更はコピーされません。以前のメッセージから派生したチャットも、その会話のその時点でのファイルシステムを再構築しません。
チェックアウト間を移動する#
プロジェクトタブを使用して、オリジナルのチェックアウトとワークツリープロジェクトの間を切り替えます。アプリが管理するワークツリーは、親プロジェクトのチャット履歴パネルに表示され、再度開くことができます。
プロジェクトで変更が行われた場所でレビューおよびコミットを行う。ワークツリーを作成しても、その変更が元のブランチにマージされない;準備が整いたときにはフッターの Git の操作 を使用する。
ワークツリーを完了する#
マージ、プルリクエストの作成、およびワークツリーの削除は、フッターの Git の操作 メニュー内の別々の操作です。マージする前に、含めたい変更をコミットしてください。
- ワークツリーのプロジェクトで、ベースにマージ をチャット下部の Git アクション から選びます。
- レビューする要約:ベースブランチ、ブランチがコミットで先頭にある数と後ろにある数、変更されたファイル、およびメインチェックアウトの現在のブランチとそれがクリーンかどうか。
- コミットリストを読み込み、ファイルを展開して差分を確認する。
- 変更を**変更をコミット...**必要がある場合はそれを使用してください。未コミットの変更はワークツリーに残り、マージされません。
- ベースにマージを選択します。Dreamはメインチェックアウトにコミットされた作業をマージし、必要に応じてベースブランチに切り替えます。
- 結果を確認した後、ワークツリーを残すまたはワークツリーとブランチを削除を選択してください。マージ後に削除を行うのは、ワークツリーがクリーンである場合にのみ提供されます。
レビューのために公開する場合は、Git の操作 → プル リクエストを作成するを使用し、Gitのワークフローを参照してください。PRを作成することでワークツリーは保持されます。
Git の操作 → ワークツリーを削除を使用してチェックアウトを削除するが、ブランチは保持する。未コミットの変更がある場合はまずコミットするか、未コミットの変更を破棄を明示的に選択する。
ワークツリーを削除するとそのディレクトリが削除され、そのプロジェクトは閉じられます。ワークツリーのプロジェクトのチャットは一緒に削除され、チャット履歴や最近閉じた項目に表示されません。会話の内容を残したい場合は、完了する前に親ワーキングスペースにブランチを分岐させます。
オプションが利用できない場合#
| メッセージ | 何をすべきか |
|---|---|
| このブランチは base 以降にコミットをもたない | 保持したい作業をコミットするか、ワークツリーを削除するを選択する |
| メインのチェックアウトには未コミットのファイルがあります | 親プロジェクトにマージする前に変更をコミットまたはストッシュする |
| メインのチェックアウトにはマージまたはリベースが進行中です | 親プロジェクトでのその操作を完了するか中止する |
| このブランチは base と歴史を共有していない | 自分の Git ワークフローを通じてマージする |
| Git リモートが設定されていません | プルリクエストを作成する前にリモートを追加する |
| GitHub CLI (gh) は利用できません | GitHub CLI をインストールし、認証を行う |
もしマージが衝突を生じる場合、Dreamはそれを中止し、base にマージした結果、衝突が発生しました。マージは中止され、何も変更されませんでした、と報告し、衝突しているファイルを提供します。base ブランチをワークツリーに取り込んで、衝突を解決し、コミットした後、base にマージを再度実行します。
親プロジェクトからワークツリーを削除する#
完了ダイアログなしでワークツリーを削除することもできます。
- 必要となる作業をコミットし、適切な場合にプッシュまたはPRを開くことで保存する。
- ワークツリーを使用してプロセスを停止する、たとえばそのターミナルで実行されているローカルアプリケーション。
- 親プロジェクトの チャット履歴 パネルを開き、ワークツリーを検索します。
- Removeアクションを使用し、確認を確認してください。
- 必要な場合ではないときにそのチェックアウトを削除するのを確認してください。
削除はワークツリーディレクトリをディスクから削除します。Gitが未コミットの変更を含んでいる場合、削除を拒否します。またそのプロジェクトに戻り、変更を確認した上で再度試みてください。
プロジェクトタブを閉じるだけでは開いているワークスペースからそのタブが削除されるに留まり、ワークツリーを削除することはそのチェックアウトが削除されることを意味する。コミットおよびPRステップについては、Gitのワークフローを参照のこと。