English | 简体中文
无缝切换分支,保持代码井然有序,轻松跨多个目录运行——简化你的开发流程。
-
在多个分支间切换可能非常繁琐,容易导致冲突或遗忘提交。Git Worktree Manager 帮助开发者在不同工作目录间快速切换,简化分支管理。
-
有时需要同时处理不同版本的代码,但切换分支或提交非常耗时。通过使用工作区,你可以在独立目录中并行开发,不会相互干扰。
Git Worktree工作原理
Git worktree 让你无需离开当前工作区,轻松处理跨分支和提交的多个任务——完美适用于管理复杂项目。
使用 git worktree,你可以创建额外的工作目录,并将它们与不同的分支或提交关联。这样做的好处是可以在不切换分支的情况下同时进行多个任务,方便开发人员处理不同的代码版本。
通过创建一个新的工作目录,我们可以在当前目录和新的工作目录之间切换,而每个目录都可以与不同的分支或提交关联。这使得你可以在每个目录中独立执行 Git 操作,如提交代码、拉取更新等,互不影响。
总结来说,git worktree 提供了一种灵活的方式来管理多个任务或版本,提升开发效率。
- 在 VSCode 扩展市场中安装
- 按下
Ctrl + Shift + R
开始操作
- git 版本 >= 2.30
(回到顶部)
(回到顶部)
- 外部终端设置
- 打开外部终端时,可以自定义打开的终端应用。在 windows 上可以通过
terminal.external.windowsExec
配置启用的终端,其他平台类似。
{ "terminal.external.osxExec": "iTerm.app", "terminal.external.windowsExec": "C:\\Program Files\\Git\\bin\\bash.exe", }
- 打开外部终端时,可以自定义打开的终端应用。在 windows 上可以通过
- 防止在执行 git pull 后,相同分支的worktree未暂存的代码自动进入暂存区
- 在
仓库目录/.git/hooks/post-merge
脚本文件中添加脚本
#!/bin/bash # 获取当前文件夹路径(Unix系统) CURRENT_FOLDER=$(pwd) # windows需要去掉下面的注释,启用 crypath 转换路径 # CURRENT_FOLDER=$(cygpath -w "$(pwd)") # 获取当前分支名称 CURRENT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) # 获取所有 worktree 的列表并逐行处理 git worktree list --porcelain | grep "worktree" | while read -r LINE; do # 提取 worktree 路径 WORKTREE=$(echo "$LINE" | awk '{print $2}') # windows需要去掉下面的注释,启用 crypath 转换路径 # WORKTREE=$(cygpath -w "$WORKTREE") # 如果当前目录路径与 worktree 路径相同,则跳过 if [ "$CURRENT_FOLDER" = "$WORKTREE" ]; then continue fi # 获取目标 worktree 的分支名称 TARGET_BRANCH=$(git --work-tree="$WORKTREE" --git-dir="$WORKTREE/.git" rev-parse --abbrev-ref HEAD) # 如果目标 worktree 的分支与当前分支相同,则进行处理 if [ "$TARGET_BRANCH" = "$CURRENT_BRANCH_NAME" ]; then echo "Processing worktree: $WORKTREE on branch: $TARGET_BRANCH" git --work-tree="$WORKTREE" --git-dir="$WORKTREE/.git" reset --merge HEAD fi done
- 这段 post-merge 脚本在 Git 合并操作后,通过将匹配的分支重置为合并后的状态,确保多个 Git worktree 的一致性。
- 在
- 列出当前文件夹的所有worktree
- 列出当前仓库的所有worktree
- 通过 worktree 文件夹快速打开终端
- 打开最近访问过的文件夹
- 使用
git switch --ignore-other-worktrees
切换任意分支 - 切换消息提示等级
- 访问 git 历史
- 展示 git 分支状态
- 拉取/推送分支
- 在工作区内添加/删除指定 worktree 目录
- git 仓库快照
- 多语言支持
- 中文
点击 打开议题 查看所有功能建议(和已知问题)
(回到顶部)
参与贡献使开源社区成为学习、启发和创造的绝佳场所。非常感谢你做出的任何贡献。
如果你有任何建议可以改进项目,欢迎你 fork 该项目并创建一个 pull request。你也可以直接打开一个带有 "enhancement" 标签的 issue。
别忘了给这个项目加个星标!再次感谢!
- Fork 该项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交你的更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开一个 Pull Request
以 MIT 许可证发布。有关更多信息,请查看 LICENSE
Jackiotyu - 2504448153@qq.com