如何避免Sourcetree识别副机本地变更,拉取时无需暂存大量文件?
Unity项目Sourcetree拉取时重复提示大量无关文件暂存的解决方案
核心原因
该问题90%以上场景是未正确配置Unity专属的.gitignore规则,导致Library、Temp、Logs等Unity自动生成的临时目录被纳入Git追踪。这类文件会在Unity运行时自动修改,哪怕副机不做任何手动修改,也会和远端仓库内容产生冲突,触发暂存提示。剩余场景为两台设备的Git换行符、文件权限配置不一致导致的假变更。
分步解决方案
1. 配置标准Unity .gitignore规则
在项目根目录创建/修改.gitignore文件,添加以下规则,覆盖所有不需要版本追踪的自动生成文件:
# Unity 自动生成目录 /[Ll]ibrary/ /[Tt]emp/ /[Oo]bj/ /[Bb]uild/ /[Bb]uilds/ /[Ll]ogs/ /[Uu]ser[Ss]ettings/ /[Pp]roject[Ss]ettings/SceneTemplateSettings.json # 编辑器缓存文件 .vs/ *.csproj *.sln *.suo *.user *.userprefs # 系统生成文件 .DS_Store Thumbs.db
2. 清理已误追踪的临时文件
在主机端完成以下操作后推送到远端:
- 先将主机端所有有效变更提交推送完毕
- 打开Sourcetree内置终端,依次执行以下命令:
git rm -r --cached . git add . git commit -m "chore: 清理误追踪临时文件,更新.gitignore" git push - 副机端执行以下命令,强制同步远端内容,覆盖本地无效变更:
git fetch origin git reset --hard origin/[你的分支名,如main/master]
3. 修复假变更问题
如果完成上述操作后仍有大量变更提示,执行以下配置统一两端Git规则,忽略无意义的变更检测:
- 忽略文件权限变更:两端均执行
git config --global core.fileMode false - 统一换行符规则:
Windows设备执行:git config --global core.autocrlf true
Mac/Linux设备执行:git config --global core.autocrlf input
4. Sourcetree端优化配置
- 打开Sourcetree偏好设置-Git,勾选「不检测可执行位变更」
- 关闭「实时文件变更检测」,副机仅拉取场景下无需实时扫描,拉取前手动刷新即可
更优同步方案
如果副机仅用于构建、预览,完全不需要修改内容,可以采用浅克隆+强制同步的方案,彻底避免变更检测耗时:
- 副机重新克隆仓库时添加浅克隆参数:
git clone --depth 1 [仓库地址],大幅缩小仓库体积和扫描范围 - 每次需要同步时直接执行
git clean -df && git pull --rebase,自动清理本地所有非追踪文件后拉取,无需手动暂存操作
内容的提问来源于stack exchange,提问作者Leon Hogan
相关产品推荐
相关产品推荐

