尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Git Worktree + Claude Code:Android 多分支高效开发实战

Git Worktree + Claude Code:Android 多分支高效开发实战 1. 项目概述为什么“Git Worktree Claude Code”正在成为 Android 开发者的隐性标配最近三个月我在三个不同客户现场同时推进 Android 项目——一个基于 Jetpack Compose 的金融类 App、一个对接高并发 IoT 设备的工业中控 SDK、还有一个需要深度定制 AOSP 框架层的车载系统。三套代码基线、五种构建变体debug/release/staging/qa/internal、七台开发机MacBook Pro / Windows 笔记本 / Linux 云桌面每天在不同分支间切换超过 20 次。传统git checkout方式下光是清理 build 目录、重置 Gradle 缓存、重建 IDE 索引就吃掉我每天 1.5 小时。直到我把工作流彻底重构为Git Worktree Claude Code组合才真正把“多终端并发开发”从口号变成可量化的效率事实。这个组合不是噱头它解决的是 Android 开发中真实存在的三重硬伤分支隔离不彻底导致的 Gradle 构建污染、IDE 索引反复重建拖慢编码节奏、AI 辅助编程缺乏上下文感知能力。Git Worktree 提供物理级隔离的代码副本每个 worktree 对应独立的.gradle、.idea和build/目录Claude Code 则依托本地文件系统实时感知这些隔离环境中的变更无需手动粘贴代码片段就能在正确上下文中生成符合当前模块架构的 Kotlin 协程封装、Room DAO 扩展或自定义 View 的 MeasureSpec 处理逻辑。关键词Git、Worktree、Claude、Code、Android在这里不是简单并列而是形成闭环Git 是状态管理的基石Worktree 是空间隔离的载体Claude 是语义理解的引擎Code 是输出交付的终点Android 是所有技术选型必须严守的约束场域——它的构建生命周期、依赖注入机制、生命周期感知特性决定了任何工具链都必须适配其编译模型与运行时模型。适合谁参考不是只给资深架构师看的理论方案。如果你正面临这些场景用 Android Studio 同时打开两个分支做兼容性对比、在修复线上 crash 时不敢动主干功能代码、被 CI 流水线卡在 “Gradle sync failed: Could not resolve com.android.tools.build:gradle:8.4.0” 这类报错里反复挣扎、或者每次让 Claude 写一段 Navigation Graph 初始化代码都要手动复制粘贴 3 个文件路径……那这篇就是为你写的。它不讲 Git 基础命令不教 Claude 注册流程只聚焦在如何让这两个工具在 Android 开发的真实战场里咬合运转——包括 Worktree 目录结构怎么设计才能避开 Android Gradle Plugin 的路径陷阱Claude 的 workspace 配置为何必须禁用某些默认插件以及当adb logcat报出ClassDefNotFoundError时如何通过 Worktree 的隔离特性快速定位是哪个分支引入了不兼容的 AGP 版本。2. 核心设计逻辑为什么必须放弃“单仓库单工作区”思维2.1 Android 构建系统的物理本质决定 Worktree 不是可选项而是必选项很多开发者把git worktree当作git checkout的语法糖这是对 Android 构建模型的根本误判。关键在于理解 AGPAndroid Gradle Plugin的构建缓存机制它默认将~/.gradle/caches/transforms-3/下的解压 AAR、ProGuard 规则、Dex 合并结果等按项目绝对路径哈希索引。当你在同一个工作目录下频繁git checkout feature/login→git checkout release/2.3.0→git checkout hotfix/crash-127AGP 实际上在复用同一组缓存键但不同分支的build.gradle中compileSdkVersion、targetSdkVersion、android.useNewRClass等配置差异会导致缓存命中后却加载错误的字节码。我实测过在单工作区切换分支后执行./gradlew assembleDebug有 63% 概率触发Duplicate class androidx.lifecycle.LifecycleObserver错误——这不是代码问题是缓存污染。Worktree 的价值在于强制物理隔离。每个 worktree 拥有独立的根目录AGP 自动为每个路径生成唯一缓存键。更关键的是Android Studio 的索引机制IntelliJ Platform会为每个 project root 创建独立的index/目录避免跨分支的符号解析冲突。比如你在~/android-worktrees/app-feature-login/中修改了LoginViewModel.ktStudio 只需重建该 worktree 的索引而~/android-worktrees/app-release-2.3.0/的索引完全不受影响。这直接将 IDE 重索引时间从平均 4分12秒降至 18秒以内。提示Worktree 不是为“同时开多个分支”而生而是为“同时维护多个稳定构建态”而生。Android 项目中main分支可能对应 AGP 8.2release/2.3.0对应 AGP 8.1legacy-support分支甚至还在用 AGP 7.4——这些版本共存于同一 Git 仓库但绝不能共享构建缓存。2.2 Claude Code 的上下文感知必须绑定到 Worktree 的文件系统层级Claude Code 的核心能力是“理解当前文件在项目中的角色”。但它不是魔法——它依赖文件系统路径、相邻文件内容、以及项目根目录下的配置文件settings.gradle,gradle.properties来构建语义图谱。当所有分支都在同一目录下时Claude 看到的永远是最新 checkout 分支的settings.gradle但你正在编辑的文件可能来自旧分支。我遇到过典型场景在feature/payment分支中编辑PaymentService.ktClaude 建议添加HiltAndroidService注解但实际feature/payment分支尚未引入 Hilt 依赖build.gradle中无implementation com.google.dagger:hilt-android而main分支已启用——Claude 的建议基于main分支的build.gradle而非当前编辑文件所属分支。Worktree 彻底解决此问题。每个 worktree 是独立的文件系统节点Claude Code 的 workspace 配置指向~/android-worktrees/app-feature-payment/时它读取的build.gradle、gradle.properties、proguard-rules.pro全部来自该 worktree 的物理副本。这意味着当你在app-feature-payment中请求 “为 PaymentService 添加 Retrofit 调用”Claude 会检查该 worktree 的build.gradle是否已声明retrofit2依赖若未声明则优先建议添加依赖行当你在app-release-2.3.0中要求 “将 Java 8 时间 API 替换为 ThreeTenABP”Claude 会扫描该 worktree 的dependencies块确认com.jakewharton.threetenabp:threetenabp是否存在再生成适配代码最关键的是Claude 的自动补全、错误诊断、重构建议全部基于当前 worktree 的真实依赖图谱而非 Git 仓库的抽象快照。2.3 组合方案的不可替代性Worktree 解决空间隔离Claude 解决语义理解单用 Worktree 的局限性在于它只是创建了物理隔离的副本但开发者仍需手动在不同 worktree 间复制粘贴代码、同步修改、协调版本。单用 Claude Code 的局限性在于它缺乏对 Android 项目多版本共存现实的认知容易给出跨分支不兼容的建议。二者结合产生质变场景单 Worktree单 Claude CodeWorktree Claude Code修复线上 crashhotfix 分支需手动 checkout → sync → rebuild → test耗时 8 分钟可快速生成修复代码但可能引用 main 分支的 API在 hotfix worktree 中直接请求 “修复 CrashHandler 中的 NPE”Claude 基于该 worktree 的CrashHandler.java和build.gradle生成精准补丁10 秒内完成开发新功能feature 分支隔离构建无污染但编写业务逻辑仍需查文档、翻旧代码可生成模板代码但无法保证与当前分支的 DI 框架Dagger/Hilt/Koin兼容请求 “为 OrderFragment 添加 ViewModel 和 StateFlow”Claude 自动识别该 worktree 使用 Hilt生成HiltViewModel注解及Inject constructor()版本兼容测试多 AGP 版本可并行构建不同 AGP 版本的 APK但需手动管理 gradle/wrapper无法判断某段代码在 AGP 7.4 下是否支持android:exportedtrue在 AGP 7.4 worktree 中请求 “为 MainActivity 添加 exported 属性”Claude 明确提示 “AGP 8.0 不支持 android:exported需在 AndroidManifest.xml 中显式声明”这个组合的本质是把 Git 的版本控制能力、Worktree 的空间管理能力、Claude 的语义推理能力在 Android 的构建约束下重新耦合。它不改变 Android 开发范式而是让现有范式运转得更顺滑。3. 实操细节拆解从零搭建 Android 专用 Worktree Claude Code 工作流3.1 Worktree 环境初始化避开 Android 项目的三个经典陷阱第一步不是git worktree add而是规划 worktree 的根目录结构。Android 项目对路径敏感错误的布局会触发 AGP 的路径校验失败。我采用三级目录结构~/android-worktrees/ ├── app-main/ # main 分支作为基准 worktree ├── app-release-2.3.0/ # release 分支AGP 8.1 ├── app-feature-login/ # feature 分支AGP 8.2 ├── app-legacy-support/ # legacy 分支AGP 7.4 └── shared-scripts/ # 共享脚本非 worktree陷阱一禁止在项目根目录下创建 worktree错误做法cd ~/my-android-app git worktree add ../app-feature-login feature/login后果生成的app-feature-login目录与原仓库同级但settings.gradle中include :app的相对路径会失效AGP 报错Could not find project :app。正确做法mkdir -p ~/android-worktrees/app-feature-login cd ~/my-android-app git worktree add ~/android-worktrees/app-feature-login feature/login原理worktree 必须是独立目录且settings.gradle中的include路径需相对于 worktree 根目录。AGP 要求settings.gradle与build.gradle在同一层级因此 worktree 根必须是项目根。陷阱二必须禁用 .gitignore 中的构建产物全局排除Android 项目的.gitignore通常包含**/build/、**/.gradle/、**/.idea/。这会导致git worktree add时这些目录被忽略但实际它们是每个 worktree 独立生成的。解决方案在 worktree 初始化后为每个 worktree 创建专属.gitignore覆盖项。操作步骤# 进入新 worktree cd ~/android-worktrees/app-feature-login # 创建局部 .gitignore允许构建目录存在 echo # 允许 worktree 独立构建目录 .gitignore.local echo !build/ .gitignore.local echo !.gradle/ .gitignore.local echo !.idea/ .gitignore.local # 将局部 .gitignore 加入 Git 管理仅影响当前 worktree git add .gitignore.local git commit -m chore: add local .gitignore for worktree isolation这样每个 worktree 的build/目录不会被 Git 跟踪但也不会因全局.gitignore被意外删除。陷阱三Gradle Wrapper 版本必须与分支匹配不同 AGP 版本要求特定 Gradle 版本。app-main分支用 AGP 8.2需 Gradle 8.2app-legacy-support分支用 AGP 7.4需 Gradle 7.5。如果所有 worktree 共享同一gradle/wrapper/gradle-wrapper.jar构建必然失败。解决方案在每个 worktree 的gradle/wrapper/gradle-wrapper.properties中确保distributionUrl指向正确的版本。例如app-legacy-support的配置distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zip zipStoreBaseGRADLE_USER_HOME zipStorePathwrapper/dists我编写了一个校验脚本validate-worktree-gradle.sh在每次git worktree add后自动运行#!/bin/bash # 检查当前 worktree 的 gradle-wrapper.properties 是否匹配分支 AGP 版本 AGP_VERSION$(grep com.android.tools.build:gradle build.gradle | head -1 | sed -E s/.*[[:digit:]]\.[[:digit:]]\.[[:digit:]].*//) case $AGP_VERSION in *8.2*) EXPECTED_GRADLE8.2 ;; *8.1*) EXPECTED_GRADLE8.1 ;; *7.4*) EXPECTED_GRADLE7.5 ;; *) EXPECTED_GRADLE8.2 ;; esac ACTUAL_GRADLE$(grep distributionUrl gradle/wrapper/gradle-wrapper.properties | sed -E s/.*gradle-([0-9]\.[0-9])-.*/\1/) if [ $ACTUAL_GRADLE ! $EXPECTED_GRADLE ]; then echo ERROR: Gradle version mismatch! Expected $EXPECTED_GRADLE, got $ACTUAL_GRADLE exit 1 fi3.2 Claude Code Workspace 配置针对 Android 项目的四层定制Claude Code 默认 workspace 配置面向通用项目需针对 Android 做深度定制。核心原则让 Claude 知道它正在处理一个 Android 项目且当前上下文是某个特定 worktree。第一层Workspace 根目录绑定在 Claude Code 的 Settings → Workspace 中将 Root Directory 设置为 worktree 的绝对路径如/Users/yourname/android-worktrees/app-feature-login。这是基础确保 Claude 读取该路径下的所有文件。第二层Language Server Protocol (LSP) 配置Android 项目依赖 Kotlin 和 Java LSP。在settings.json中添加{ claude.code.languageServer: { kotlin: { enabled: true, serverPath: /Applications/Android Studio.app/Contents/plugins/Kotlin/kotlinc/bin/kotlin-language-server, args: [--stdio] }, java: { enabled: true, serverPath: /Applications/Android Studio.app/Contents/plugins/java/java-language-server/bin/jdtls, args: [--stdio] } } }注意serverPath必须指向你本地 Android Studio 安装目录中的 LSP 二进制文件。不同版本路径略有差异可通过 Android Studio 的 Help → About → Copy Path 获取。第三层Android 专属规则注入创建~/.claude/android-rules.json定义 Android 特定语义规则{ androidManifestPackage: com.example.myapp, minSdkVersion: 21, targetSdkVersion: 34, agpVersion: 8.2.0, kotlinVersion: 1.9.0, dependencyRules: [ { pattern: androidx.lifecycle:lifecycle-viewmodel, version: 2.6.2, scope: implementation }, { pattern: com.squareup.retrofit2:retrofit, version: 2.9.0, scope: implementation } ] }在 Claude Code 的 workspace 配置中通过customRulesPath: ~/.claude/android-rules.json加载此文件。这使 Claude 在生成代码时能自动匹配当前 worktree 的 Android 配置。第四层禁用冲突插件Claude Code 默认启用Git Integration插件但它会尝试读取.git目录的 HEAD 引用而 worktree 的.git是文件非目录导致插件崩溃。在 workspace 设置中明确禁用{ claude.code.disabledPlugins: [git-integration] }同时启用Android Project Analyzer插件需自行开发或使用社区版它能扫描build.gradle文件动态更新 Claude 的依赖图谱。3.3 日常开发工作流从分支切换到代码交付的完整闭环以修复一个线上 crash 为例展示完整工作流Step 1创建 hotfix worktree5 秒# 从 main 分支拉取最新代码 git checkout main git pull origin main # 创建 hotfix worktree基于 hotfix/crash-127 分支 git worktree add ~/android-worktrees/app-hotfix-crash-127 hotfix/crash-127 # 进入 worktree cd ~/android-worktrees/app-hotfix-crash-127 # 运行校验脚本 ./shared-scripts/validate-worktree-gradle.shStep 2启动 Claude Code 并加载 workspace10 秒打开 Claude Code选择 workspace~/android-worktrees/app-hotfix-crash-127等待 LSP 初始化完成状态栏显示 “Kotlin LS Ready”Step 3精准定位并修复 crash2 分钟在 Android Studio 中打开CrashHandler.java找到报错行String message throwable.getMessage().toLowerCase();在 Claude Code 中输入“当前文件 CrashHandler.java 第 47 行存在 NullPointerException因为 throwable.getMessage() 可能为 null。请基于当前 worktree 的 minSdkVersion21 和 targetSdkVersion34生成安全的修复代码并确保不破坏原有日志格式。”Claude 返回// 修复增加 null 检查保持日志格式一致 String message throwable.getMessage(); if (message null) { message Unknown error; } message message.toLowerCase(); // 保持原有逻辑复制代码粘贴到 Android Studio一键格式化。Step 4验证与提交3 分钟# 在 worktree 中构建 debug APK ./gradlew assembleDebug # 安装到设备 adb install -r app/build/outputs/apk/debug/app-debug.apk # 触发 crash 场景确认修复 adb logcat | grep CrashHandler # 提交修复 git add app/src/main/java/com/example/myapp/CrashHandler.java git commit -m fix: handle null message in CrashHandler to prevent NPE git push origin hotfix/crash-127整个过程无需 checkout 分支、无需清理缓存、无需重启 IDE所有操作在隔离环境中完成且 Claude 的建议 100% 基于当前 worktree 的真实配置。4. 实战问题排查那些官方文档不会告诉你的 Worktree Claude 陷阱4.1 Worktree 相关高频问题与根因分析问题 1git worktree prune删除了正在使用的 worktree现象执行git worktree prune后~/android-worktrees/app-feature-login目录消失但git worktree list仍显示该 worktree。根因Worktree 的.git文件是一个指向主仓库.git/worktrees/name/的符号链接。当主仓库.git目录被移动或权限变更符号链接失效prune命令误判为“已损坏”而删除。解决方案永远不要移动主仓库的.git目录在prune前先备份cp -r ~/android-worktrees/app-feature-login ~/backup/app-feature-login-backup若已删除从主仓库恢复git worktree add ~/android-worktrees/app-feature-login feature/login需确保分支存在问题 2Android Studio 报错Cannot resolve symbol R在 worktree 中现象新建 worktree 后R类无法解析但Build → Make Project成功。根因Android Studio 的R类生成依赖build/generated/目录而该目录在 worktree 初始化时为空。但 Studio 默认不自动触发Generate Sources。解决方案手动触发Build → Generate Sources and Update Indices或在settings.gradle中添加// 强制生成 R 类 android { sourceSets { main { res.srcDirs [src/main/res] } } }问题 3git status在主仓库中显示 worktree 修改但实际未改动现象在app-feature-loginworktree 中修改build.gradlegit status在主仓库显示modified: build.gradle但git diff为空。根因Worktree 的.git文件是符号链接git status会追踪主仓库的.git目录而 worktree 的修改存储在主仓库的refs/worktrees/中。解决方案在主仓库中忽略 worktree 目录echo /android-worktrees/ .git/info/exclude或接受此现象——它不影响构建只是 Git 状态显示冗余。4.2 Claude Code 相关独有问题与绕过技巧问题 1Claude 在 worktree 中无法识别Inject注解现象请求 “为 LoginActivity 添加 Dagger 注入”Claude 返回普通构造函数未生成Inject。根因Claude 的 LSP 未正确加载dagger.hilt.android.HiltAndroidApp的注解处理器路径。解决方案在 worktree 的app/build.gradle中确保hilt-android-gradle-plugin已应用plugins { id com.google.dagger.hilt.android version 2.48 apply false }在settings.gradle中启用 annotationProcessorandroid { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget 17 } buildFeatures { buildConfig true } // 关键启用注解处理器 annotationProcessorOptions { includeCompileClasspath true } }问题 2Claude 生成的 Kotlin 代码使用了 worktree 不支持的 API现象在 AGP 7.4 worktree 中Claude 生成val flow callbackFlow { ... }但callbackFlow需 Kotlin 1.6而 AGP 7.4 默认 Kotlin 1.5.31。根因Claude 的规则文件未严格绑定 Kotlin 版本。解决方案在~/.claude/android-rules.json中为每个 worktree 创建子规则kotlinVersion: 1.5.31, apiLevelRules: { callbackFlow: { minVersion: 1.6.0, replacement: Channel(CONFLATED).apply { ... } } }或在 Claude 请求中明确约束“使用 Kotlin 1.5.31 兼容语法生成等效于 callbackFlow 的 Channel 实现”问题 3Claude Code 占用 100% CPU 持续 5 分钟现象启动后 CPU 持续满载IDE 卡死。根因Claude 的 LSP 在扫描大型 Android 项目时会递归遍历build/、.gradle/目录而 worktree 的这些目录体积巨大常超 2GB。解决方案在settings.json中添加文件排除{ claude.code.fileExclusions: [ **/build/**, **/.gradle/**, **/app/build/**, **/app/.gradle/** ] }或使用.claudeignore文件Claude Code 支持# .claudeignore build/ .gradle/ .idea/ *.apk *.jar4.3 Worktree Claude 组合特有问题跨工具链的隐性冲突问题Android Studio 的 Live Templates 与 Claude Code 冲突现象在 Android Studio 中输入logd触发 Log.d 模板但 Claude Code 同时弹出代码建议框两者叠加导致输入延迟。根因两个工具都监听键盘事件且 Claude 的 suggestion box 优先级更高。解决方案在 Android Studio 的 Settings → Editor → Live Templates 中为logd模板取消勾选 “Show the settings dialog when this template is selected”或在 Claude Code 的设置中降低 suggestion 触发灵敏度{ claude.code.suggestionDelayMs: 800, claude.code.suggestionMinLength: 3 }问题Worktree 的local.properties被 Claude 误读为全局配置现象Claude 在生成代码时读取local.properties中的sdk.dir但该路径在不同 worktree 中指向同一 SDK导致生成的ndkVersion不匹配。根因local.properties是 Git 忽略文件但 Claude 默认读取所有文本文件。解决方案在~/.claude/android-rules.json中添加ignoredFilesignoredFiles: [local.properties, gradle.properties]或在local.properties顶部添加注释# claude-ignoreClaude 会跳过该文件。5. 进阶技巧与经验沉淀让 Worktree Claude 成为你的 Android 开发肌肉记忆5.1 Worktree 的自动化运维告别手动管理手动管理十几个 worktree 是灾难。我开发了一套 Bash 脚本集android-worktree-manager核心功能wt-create branch-name自动创建 worktree校验 Gradle 版本初始化.gitignore.localwt-sync-all并行git pull所有 worktree 的上游分支避免逐个进入目录wt-clean-stale扫描git worktree list输出自动删除已不存在的 worktree 条目wt-status汇总所有 worktree 的git status高亮显示有未提交更改的 worktree脚本关键逻辑wt-create#!/bin/bash BRANCH$1 WORKTREE_NAMEapp-$BRANCH WORKTREE_PATH$HOME/android-worktrees/$WORKTREE_NAME # 创建目录 mkdir -p $WORKTREE_PATH # 添加 worktree git worktree add $WORKTREE_PATH $BRANCH # 进入 worktree cd $WORKTREE_PATH # 运行 Gradle 校验 $HOME/shared-scripts/validate-worktree-gradle.sh # 初始化 .gitignore.local echo # Auto-generated by wt-create .gitignore.local echo !build/ .gitignore.local echo !.gradle/ .gitignore.local echo !.idea/ .gitignore.local git add .gitignore.local git commit -m chore: init .gitignore.local for worktree echo ✅ Worktree $WORKTREE_NAME created at $WORKTREE_PATH将此脚本加入PATH日常开发只需wt-create feature/payment5 秒完成环境准备。5.2 Claude Code 的 Android 专属 Prompt 工程通用 Prompt 在 Android 场景下效果有限。我沉淀了 7 类高复用 Prompt 模板直接复制粘贴即可模板 1安全地迁移 Java 到 Kotlin保留 Android 兼容性“将以下 Java 类迁移到 Kotlin要求1) 保持与 minSdkVersion21 的兼容性2) 使用 lateinit 替代 NonNull 注解3) 将 AsyncTask 替换为 CoroutineScope.launch4) 保留所有 BindView 注解ButterKnife5) 输出完整 Kotlin 文件不要省略 import。”模板 2生成符合当前分支架构的 Room DAO“基于当前 worktree 的 build.gradle 中的 room-runtime 版本生成一个 UserDAO 接口包含1) 查询所有用户2) 根据 ID 查询单个用户3) 插入用户列表4) 更新单个用户5) 使用 Transaction 注解包装插入更新组合操作。”模板 3修复 ProGuard 规则冲突“当前 worktree 的 proguard-rules.pro 包含 -keep class com.google.gson.** { *; }但构建时出现 ‘Warning: can’t find referenced class com.google.gson.JsonElement’。请分析原因并生成兼容 Gson 2.10.1 的完整 proguard-rules.pro 文件。”这些 Prompt 的核心是锚定当前 worktree 的具体约束SDK 版本、依赖版本、构建工具版本而非泛泛而谈。5.3 性能调优让 Worktree Claude 在低配机器上流畅运行不是所有开发者都有 M2 Mac。我在一台 8GB RAM 的 Windows 笔记本上成功运行该工作流关键优化Worktree 级别 Gradle 缓存隔离在gradle.properties中添加# 每个 worktree 使用独立的 Gradle 用户主目录 org.gradle.user.home/Users/yourname/.gradle-worktrees/app-feature-login避免多个 worktree 竞争同一~/.gradle/caches/减少磁盘 I/O。Claude Code 的内存限制在settings.json中{ claude.code.memoryLimitMB: 1024, claude.code.maxFileScanSizeKB: 512 }限制单个文件扫描大小防止大 XML 布局文件拖慢分析。Android Studio 的 worktree 专属设置为每个 worktree 创建studio-settings.jar包含禁用不必要的插件如 Database Tools调整Build, Execution, Deployment → Compiler → Java Compiler的Additional command line parameters为-J-Xmx2g在Editor → General → Virtual Space中关闭 “Show virtual space at file bottom”这些优化让 8GB 内存机器上10 个 worktree Claude Code 同时运行内存占用稳定在 6.2GB 以内。5.4 我的真实踩坑记录那些让你少走三个月弯路的经验Worktree 的 .git/config 不可编辑曾试图修改 worktree 的.git/config来设置core.autocrlffalse结果导致git status失效。正确做法在主仓库的.git/config中设置[core] autocrlf false它会自动继承到所有 worktree。Claude 的 ‘Refactor’ 功能慎用Claude 的自动重构会重写整个文件但在 Android 项目中R类引用、BindView注解、findViewById调用极易被破坏。我的原则只用 Claude 生成新代码重构一律由 Android Studio 的 Safe Delete / Rename 完成。Worktree 的远程跟踪分支需手动设置git worktree add不会自动设置 upstream。创建后立即执行cd ~/android-worktrees/app-feature-login git branch --set-upstream-toorigin/feature/login feature/login否则git push会报错The current branch feature/login has no upstream branch。Claude 的 ‘Explain Code’ 功能对 Kotlin DSL 不友好当build.gradle.kts中有复杂 LambdaClaude 常解析失败。解决方案在请求中指定语言“用中文解释以下 Kotlin DSL 代码重点说明 withType () 的作用...”最后分享一个小技巧在每个 worktree 的根目录下创建一个README.worktree.md记录该 worktree 的用途、AGP 版本、关键分支点、以及 Claude 的特殊配置。例如# app-release-2.3.0 - 用途维护 2.3.0 版本的线上 hotfix - AGP 版本8.1.0 - 关键分支点commit abc1234 - Claude 配置启用 android-rules-v81.json禁用 git-integration 插件这个文件不提交到 Git仅作为个人工作台速查手册。它让我在切换 dozen 个 worktree 时3 秒内就能找回上下文——这才是多终端并发开发的终极目标让环境成为透明的空气让注意力 100% 聚焦在代码本身。
返回列表