如何在 Windows 上卸载 Sourcetree
卸载 Sourcetree 不会动你的仓库,它们是普通文件夹,克隆到哪儿就留在哪儿。还没推送的改动先推送,毕竟要走的是这个应用,不是你的工作成果。这份指南覆盖用 Atlassian.Sourcetree winget 包按用户安装的 Sourcetree。
先退出 Sourcetree
在窗口里退出 Sourcetree,再打开任务管理器(Ctrl+Shift+Esc)确认没有 Sourcetree.exe 还在。
用自带的卸载器移除应用
打开「设置 › 应用 › 已安装的应用」,找到 Sourcetree,选择卸载,或者运行:
winget uninstall --id Atlassian.Sourcetree
Sourcetree 自带的卸载器是静默运行的,但卸载自己的过程中会短暂启动一次 Sourcetree,这是它卸载器的正常步骤,不是意外。
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
%LOCALAPPDATA%\SourceTree |
Sourcetree 的安装目录 | 卸载器会删 |
%LOCALAPPDATA%\Atlassian\SourceTree 和 %APPDATA%\Atlassian\SourceTree |
Sourcetree 另外写的两个小的按用户数据文件夹 | 这次测试里是空的,可以删 |
%LOCALAPPDATA%\Atlassian\SourceTree.exe_Url_... 及其 %APPDATA% 对应文件夹 |
Sourcetree 自带卸载器启动过一次应用时生成的 .NET 应用设置与缓存 | 可以删 |
| Windows 凭据管理器里保存的 git 远程仓库登录信息 | 你连接过的仓库的登录令牌 | 不在这份指南里,想清理自己去凭据管理器里删 |
检查结果
卸载完成后运行下面几条只读命令:
Get-Process Sourcetree -ErrorAction SilentlyContinue
winget list --id Atlassian.Sourcetree
Test-Path "$env:LOCALAPPDATA\SourceTree"
Test-Path "$env:APPDATA\Atlassian\SourceTree"
Get-Process没有输出只表示未观察到匹配进程,被忽略的查询错误不能当作已经退出。列出进程,说明窗口还开着。winget list正常完成且没有匹配,才说明包记录已经没了;列出一行,说明卸载没完成。- 第一条
Test-Path返回False,说明安装目录已经没了;返回True,说明那里还有文件。 Test-Path "$env:APPDATA\Atlassian\SourceTree"返回True,说明这个小数据文件夹还在,里面没什么需要备份的,想删自己删掉就行。
用 winget 安装时
winget uninstall 运行的是「设置 › 应用」用的同一个 Squirrel 卸载器(Update.exe --uninstall -s),删的是同一批程序文件,不会主动动 Atlassian 数据文件夹。
账号与订阅
卸载不会让你从连接的 Bitbucket、GitHub 或其他托管账号退出登录,那些账号的连接状态在服务自己那边,和本地应用装没装没关系。
Mole 会列出什么
对按用户安装的 winget 版 Sourcetree:
- 安装目录、桌面快捷方式和开始菜单
Atlassian文件夹默认勾选。 - Sourcetree 自己的设置
%LOCALAPPDATA%\Atlassian\SourceTree和%APPDATA%\Atlassian\SourceTree会列出,但默认不勾选。 - Sourcetree 的卸载器会把应用启动一次,在审查列表生成之后写出
.exe_Url_...文件夹,Mole 在卸载器跑完后再扫一次,把它们放进结果里单独的一节,默认不勾选,带自己的「移到回收站」链接。 - Mole 不会去搜自定义的项目文件夹找仓库,凭据管理器里的条目也不在它的卸载范围内。
这次检查覆盖了什么
测试的是通过 winget 按用户安装的 Sourcetree 3.4.32。这次把审查列表和「卸载时新出现」那一节都全选,都已移除。没有测试:已登录的 Bitbucket 或 GitHub 账号,以及官网安装包。
