终端 > 代码
Git worktrees
# Git worktrees Warp 原生支持 Git worktrees — 这是一项 Git 功能,允许您在不同的目录中同时检出多个分支,所有这些分支都由同一个仓库支持。这与简单地切换分支不同:使用 worktrees,您可以同时在main 分支上操作 ~/project,并在 feature-x 分支上操作 ~/project-wt/feature-x,无需暂存或上下文切换。 ## Warp 中 worktrees 的工作方式 Warp 会自动检测 worktree 检出。当您在 worktree 目录中打开终端时,Warp 会识别指向主仓库的 .git 文件,并将 worktree 视为一个功能齐全的仓库: * **代码审查面板** — 每个 worktree 都有自己的代码审查面板,显示该 worktree 分支的未提交更改。您可以在每个 worktree 中独立审查差异、恢复代码块和放弃更改。 * **Git 状态芯片** — 输入栏中的 Git 差异芯片和分支指示器会反映终端所在的 worktree 的正确分支和更改计数。 * **文件监控** — Warp 同时监控 worktree 的工作目录和共享的 .git 目录。对共享 Git 状态的更改(例如推送到远程的新提交)将被检测并传播到所有打开的 worktrees。 * **代码库上下文** — 每个 worktree 都为 代码库上下文 独立索引,因此代理可以在您正在使用的任何 worktree 中获得准确的上下文。 * **仓库范围的功能** — 项目规则(AGENTS.md、WARP.md)、忽略文件和其他仓库范围的设置在每个 worktree 中都能正常工作。 ## 何时使用 worktrees Worktrees 在以下情况特别有用: * **在处理自己的分支时审查 PR** — 在单独的 worktree 中打开 PR 分支,而不会中断您正在进行的工作。 * **在一个分支上运行测试,同时在另一个分支上编写代码** — 在一个 worktree 中运行长时间的测试套件,同时在另一个 worktree 中继续开发。 * **并行本地代理工作** — 当在同一仓库上协调多个本地代理时,每个代理可以在自己的 worktree 中操作,以避免文件冲突。 ## 创建 worktree 从终端创建新的 worktree: ```bash # 为现有分支创建 worktree git worktree add ../my-feature feature-branch # 使用新分支创建 worktree git worktree add -b new-branch ../new-branch main # 列出所有 worktrees git worktree list # 完成后移除 worktree git worktree remove ../my-feature ``` 创建后,在新 Warp 标签页或窗格中打开 worktree 目录。Warp 会自动检测到它 — 无需额外配置。 :::note 与标准仓库相比,worktrees 中的提交状态更改通知(例如检测新提交)可能会略有延迟。Warp 正在积极改进这一点。 :: Warp 原生支持 Git worktrees,让您可以在多个分支上同时工作,并获得完整的代码审查、代码库上下文和代理支持。
Warp 原生支持 Git worktrees — 这是一项 Git 功能,允许您在不同的目录中同时检出多个分支,所有这些分支都由同一个仓库支持。这与简单地切换分支不同:使用 worktrees,您可以同时在 main 分支上操作 ~/project,并在 feature-x 分支上操作 ~/project-wt/feature-x,无需暂存或上下文切换。
Warp 中 worktrees 的工作方式
标题为“Warp 中 worktrees 的工作方式”的部分Warp 会自动检测 worktree 检出。当您在 worktree 目录中打开终端时,Warp 会识别指向主仓库的 .git 文件,并将 worktree 视为一个功能齐全的仓库
- 代码审查面板 — 每个 worktree 都有自己的代码审查面板,显示该 worktree 分支的未提交更改。您可以在每个 worktree 中独立审查差异、恢复代码块和放弃更改。
- Git 状态芯片 — 输入栏中的 Git 差异芯片和分支指示器会反映终端所在的 worktree 的正确分支和更改计数。
- 文件监控 — Warp 同时监控 worktree 的工作目录和共享的
.git目录。对共享 Git 状态的更改(例如推送到远程的新提交)将被检测并传播到所有打开的 worktrees。 - 代码库上下文 — 每个 worktree 都为 代码库上下文 独立索引,因此代理可以在您正在使用的任何 worktree 中获得准确的上下文。
- 仓库范围的功能 — 项目规则(
AGENTS.md、WARP.md)、忽略文件和其他仓库范围的设置在每个 worktree 中都能正常工作。
何时使用 worktrees
标题为“何时使用 worktrees”的部分Worktrees 在以下情况特别有用
- 在处理自己的分支时审查 PR — 在单独的 worktree 中打开 PR 分支,而不会中断您正在进行的工作。
- 在一个分支上运行测试,同时在另一个分支上编写代码 — 在一个 worktree 中运行长时间的测试套件,同时在另一个 worktree 中继续开发。
- 并行本地代理工作 — 当在同一仓库上协调多个本地代理时,每个代理可以在自己的 worktree 中操作,以避免文件冲突。
创建 worktree
标题为“创建 worktree”的部分从终端创建新的 worktree
# Create a worktree for an existing branchgit worktree add ../my-feature feature-branch
# Create a worktree with a new branchgit worktree add -b new-branch ../new-branch main
# List all worktreesgit worktree list
# Remove a worktree when donegit worktree remove ../my-feature创建后,在新 Warp 标签页或窗格中打开 worktree 目录。Warp 会自动检测到它 — 无需额外配置。