UniMatch:重新定义弱监督到强监督的一致性学习框架
2026/7/15 16:55:51
.git仓库,同时隔离工作区文件、暂存区和配置。worktree配置项(如git config --global core.worktree true)。git worktree add <path> <branch-name>基础命令。# 假设当前在 main 分支,为 feature/login 分支创建工作树gitworktreeadd../myproject-feature-login feature/login输出示例:Preparing worktree (new branch 'feature/login') HEAD is now at a1b2c3d Initial commit说明:此命令在上级目录的myproject-feature-login文件夹中创建了一个链接到feature/login分支的新工作树。如果分支不存在,会自动创建。# 基于远程的 bugfix/issue-123 分支创建工作树gitworktreeadd-bbugfix/issue-123../myproject-bugfix origin/bugfix/issue-123输出示例:Preparing worktree (new branch 'bugfix/issue-123') branch 'bugfix/issue-123' set up to track 'origin/bugfix/issue-123'. HEAD is now at d4e5f6a7 Fix null pointer exception说明:-b参数用于创建并切换到新分支,同时通过origin/bugfix/issue-123指定了跟踪的远程分支。Ctrl+Shift+P)创建。git worktree list进行管理。../myproject-feature-login工作树(对应feature/login分支)中工作:# 1. 查看当前工作树状态gitstatus# 输出示例:# On branch feature/login# Changes not staged for commit:# modified: src/auth.js# 2. 暂存更改gitaddsrc/auth.js# 3. 提交更改gitcommit-m"feat(login): add user authentication logic"输出示例:[feature/login 8h9i0j1k] feat(login): add user authentication logic 1 file changed, 25 insertions(+), 3 deletions(-)说明:此流程与在主仓库中操作完全一致,但提交仅影响当前工作树关联的feature/login分支。# 在 feature/login 工作树中,查看与 main 分支的差异gitdiffmain--stat输出示例:src/auth.js | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-)说明:git diff main --stat可以快速统计当前工作树(feature/login)与main分支之间的文件变更摘要,无需切换分支上下文。git worktree remove <path>或 VS Code 集成选项。.vscode/settings.json为不同工作树定制编辑器设置。对比维度:以下是 Git 工作树方案与传统多文件夹/多实例方案在各维度上的详细对比:
| 对比维度 | Git 工作树方案 | 传统多文件夹/多实例方案 |
|---|---|---|
| 磁盘空间 | 优势:共享.git对象库,仅额外存储工作目录文件,大幅节省空间。劣势:无。 | 劣势:每个副本都是完整克隆,包含独立的.git文件夹,占用大量重复空间。 |
| 性能开销 | 优势:操作(如 fetch、log)共享对象库,速度更快;分支切换几乎无开销。 劣势:无。 | 劣势:每个副本需独立执行 Git 操作,网络与磁盘 I/O 开销成倍增加。 |
| 操作复杂度 | 优势:原生 Git 命令支持(git worktree),VS Code 集成良好,管理集中。劣势:需要学习新命令,Windows 符号链接可能需额外配置。 | 优势:概念简单,直接操作文件夹。 劣势:手动维护多个副本,同步、切换繁琐,易出错。 |
| 分支同步便利性 | 优势:所有工作树共享同一仓库,分支状态实时同步,推送/拉取无需额外操作。 劣势:无。 | 劣势:需分别进入每个文件夹执行git pull/git push,容易遗漏或产生冲突。 |
优势总结:节省克隆时间、共享对象库、原子化操作、更好的 VS Code 集成度。
局限性:Windows 符号链接注意事项、部分 GUI 客户端支持度。
.git文件是什么?可以删除吗?