SourceTree 使用教程:Git 图形化客户端从入门到实战
如果你已经受够了在终端里敲git diff然后被满屏绿色红色搞得眼花缭乱或者你刚入行想搞清楚“分支”到底是个什么东西那么 SourceTree 是一个非常值得认真考虑的 Git 图形化客户端。它是 Atlassian 公司出品的免费跨平台工具同时支持 Windows 和 macOS把 clone、commit、push、pull、branch、merge、stash 这些高频 Git 操作全部变成了鼠标点击配合图形化分支视图和文件改动预览能让你在真正看懂 Git 在做什么的前提下把代码管理这件事做得又快又稳。这篇文章会按“下载、安装、基础使用、进阶操作、问题排查”的顺序来写最后还会分享一些我实际用下来的真实体会尤其适合刚接触 Git 或者想从命令行切换到图形界面的朋友。1. 先想清楚为什么选 SourceTree它到底解决了什么问题很多人第一次听说 SourceTree是因为同事推荐或者在网上搜“Git 图形化工具”时看到的。但真正上手之前最好先搞清楚一个核心问题Git 本身只是一个命令行工具为什么还需要一个 GUI 客户端我的答案是SourceTree 并不是把命令翻译成按钮的“玩具”它提供的是一整套可视化的工作流视图能帮你把 Git 的数据流逻辑真正理顺。1.1 命令行 Git 与图形界面到底差在哪Git 的命令行本身并不复杂git add、git commit、git push这三个动作就是日常 90% 的操作。但新手容易栽在几个抽象概念上暂存区Index到底和普通文件夹差在哪分支看起来像是几个分叉实际在提交历史上到底怎么流动git log --graph输出的那些*、/、\组成的字符画初看基本靠猜。SourceTree 把这些东西全部视觉化了。你打开一个仓库界面左边是当前工作区的文件变更右边是有序的提交历史中间上方是当前分支的名称。暂存区的概念变成了一个可以来回拖放的列表分支合并的结果直接在图上用线条体现。我的感觉是命令行让你“知道”Git 在做某事SourceTree 让你“看见”Git 在做某事这两者带来的学习效率差别非常大。我举个具体例子。命令行里看一次改动是这样的diff --git a/src/auth.js b/src/auth.js index 123abc..456def 100644 --- a/src/auth.js b/src/auth.js -42,6 42,7 export default { return user; } console.log(debug)对不熟悉 diff 格式的人来说 -42,6 42,7 这种行号标记需要花时间去适应。而在 SourceTree 里同一个文件会以左右两栏的形式呈现左边是改动前的版本右边是改动后新增的代码会高亮标注一眼就能看到谁加了哪一行。对于频繁需要走查代码的开发者来说这种可视化差异是最直接的价值。1.2 SourceTree 的核心能力清单SourceTree 能做的事情基本覆盖了 Git 的日常功能但有几项我特别推荐可视化提交历史与分支图分支怎么长出来的、谁合并了谁一目了然快捷的暂存与提交可以选择单个文件甚至某一段代码暂存提交时填信息也方便贮藏Stash改到一半的工作临时保存起来随时恢复远程仓库管理push、pull、fetch、添加远程地址都能直接操作内置文件比较查看每次提交改了什么不需要再去命令行敲 diffGit Flow 集成一键创建 feature、hotfix、release 分支走标准流程很省心平台联动支持 GitHub、GitLab、Bitbucket 的 OAuth 登录和凭据管理。它是免费软件只要不商用实际上对个人和小团队基本无限制跨 Windows 和 macOS。相比其他 Git GUI 比如 TortoiseGit、GitKraken、ForkSourceTree 的优势在于免费且功能全面细节上也比较老练。接下来就进入正题说下载和安装。2. 下载与安装全流程从官网识别到首次启动很多教程喜欢跳过下载这一步直接讲安装但我在实际帮别人解决 SourceTree 问题时发现不少麻烦恰恰是从下载开始的。下载到捆绑了各种流氓软件的“假 SourceTree”、下到旧版本导致登录页一直转圈、安装时选错了 Git 组件——这些都是真实发生过的坑。所以我单独把这部分写一节尽量避免你在第一步就翻车。2.1 认准官方渠道别被第三方下载站坑SourceTree 是 Atlassian 的产品官方页面在 sourcetreeapp.com或者从 Atlassian 官网的 Product 列表里找到 SourceTree 入口。页面里直接有 Download for Windows 和 Download for macOS 两个按钮不需要填写邮箱不需要注册点击就能下载。这里要特别提醒不要图省事去搜“SourceTree 下载”然后随便点进一个第三方下载站。那些网站经常把 SourceTree 和自家捆绑软件打包在一起有的甚至拿旧版本冒充最新版安装完多了一堆垃圾软件还不说版本太老还会出现登录失效、仓库列表无法刷新的问题。下载完之后Windows 用户看到的应该是一个.exe文件体积通常在几十 MB 到一百多 MBmacOS 用户拿到的是.dmg镜像文件。如果你下载到的是一个压缩包然后里面还有一堆不明文件大概率就找错地方了。另外建议顺手看一眼版本号。SourceTree 的更新还算勤快官方页面上会标注当前最新版本号。如果下载页面的版本看起来明显落后或者安装包名称里带一些奇怪的前后缀那就直接放弃这个下载源回官网重下。2.2 Windows 安装组件选择与首次启动Windows 下安装比较简单双击 exe 后一路 Next 基本能完成但有几个地方要注意。安装过程中会询问你是否同时安装 Git 和 MercurialAtlassian 以前同时支持两种版本控制系统现在 Mercurial 已经不是重点。如果你的电脑已经装了 Git for Windows这里可以取消勾选后续在 SourceTree 设置里指定已有 Git 的路径如果电脑是纯净状态建议勾选让 SourceTree 直接内置一套 Git避免后续又因为缺环境而报错。我个人更推荐的方式是电脑上先单独装一个 Git for Windows因为日常很多场景比如命令行操作用得到SourceTree 则通过“工具 - 选项 - Git”指向系统 Git 的git.exe这样两边版本一致不会出现 SourceTree 内置 Git 和系统 Git 行为不同的诡异问题。安装完成后首次启动大概率会弹出 Atlassian 账号登录页面要求你登录或注册账号。很多人卡在这一步其实完全可以跳过登录页面底部或者右上角通常有 Skip / 以后再说 的入口不同版本位置略有区别仔细找一下。跳过登录后SourceTree 会提示你设置 Git 的用户名和邮箱这个信息会作为你后续所有提交的作者信息建议和代码托管平台GitHub、GitLab 等上的账号保持一致否则提交记录里显示的名字容易对不上号。首次打开一个仓库时SourceTree 还可能会弹窗询问是否信任该仓库的权限这主要是做安全提醒点确认就行。整体上 Windows 安装很少出岔子多数问题集中在登录和 Git 路径配置上。2.3 macOS 安装与权限处理macOS 版安装相对简单打开.dmg后把 SourceTree 图标拖进 Applications 文件夹即可。但第一次启动常常会遇到几个和权限相关的问题这里提前说明。如果你下载的是最新版首次启动时系统可能弹出“无法打开因为无法验证开发者”的提示。这是 macOS 的 Gatekeeper 安全机制在起作用此时不要去网上找什么绕过系统保护的脚本直接去“系统设置 - 隐私与安全性”找到对应提示点击“仍要打开”即可。接下来 SourceTree 可能会询问是否安装“Git”或“Xcode Command Line Tools”这个取决于你的电脑上有没有装过命令行开发环境。如果弹出来建议直接同意安装因为 SourceTree 需要调用系统的 Git 命令。安装过程可能要等一会儿还会弹回终端窗口执行属于正常现象。打开 SourceTree 后同样会要求登录 Atlassian 账号处理方式和 Windows 一样找 Skip 入口跳过即可。需要提醒的是macOS 下一次启动 SourceTree 可能会弹窗请求访问钥匙串Keychain这是 SourceTree 用于保存远程仓库凭证的点击允许就行否则后面克隆私有仓库时会反复询问账号密码。3. 上手实操克隆项目、日常提交、分支管理与贮藏安装配置好了下面进入真正有用的部分。我会按一个开发者的日常节奏来写场景基本模仿真实工作流把远程仓库拉到本地、改代码、提交、推送、切分支、临时保存工作。发按钮位置会尽量说清楚但不同版本界面细节会微调认准功能和快捷键基本不会错。3.1 克隆远程仓库与关联本地已有代码克隆远程仓库是最常见的起步动作。在 SourceTree 首页点击“克隆/新建”Clone / New或者直接用快捷键 Windows 下CtrlShiftOmacOS 下CmdShiftO。在弹出的对话框里第一栏“源 URL”Source URL粘贴你从 GitHub、GitLab、Gitee 等平台复制的仓库地址支持 HTTPS 和 SSH 两种形式。第二栏选择本地要存放的目录第三栏可以修改克隆后的文件夹名称确认后点击“克隆”。克隆期间左下角会显示进度仓库大了多等一会儿即可。如果仓库是私有的首次克隆会触发认证。用 HTTPS 地址的时候SourceTree 会弹出窗口让你输入托管平台的账号密码或者通过 OAuth 跳转网页完成授权。用 SSH 地址的时候需要先配置好 SSH Key这个点在第 5 章的问题排查里详细说。克隆成功后SourceTree 左侧仓库列表会出现这个项目双击进入即可看到完整分支和提交历史。还有一类常见需求是“本地已有代码想接入 SourceTree 和远程仓库”对应不少同学搜过的“SourceTree 关联本地仓库”。操作不复杂先在 SourceTree 里点击“文件 - 打开 / 添加”File - Open / Add Existing Repository选择本地项目文件夹如果该文件夹还没初始化过 Git 仓库SourceTree 会提示你是否初始化确认即可。然后在顶部菜单栏点击“仓库”Repository-“远程仓库”Remote-“添加”AddRemote 名称通常填originURL 填远程仓库地址保存后本地代码就和远程仓库建立了关联接下来就能正常推送了。3.2 提交与推送把暂存区这个概念搞明白在 SourceTree 里提交Commit的操作被大大简化了但很多人刚上手时反而不太适应“暂存”这个动作。我先打个比方Git 的本地仓库像一个文件柜工作区是你的桌面暂存区Index是一个“打包台”。你在桌面上折腾一堆文件最终要归档哪些放进文件柜得先放到打包台上打包这个“放上打包台”的动作就是暂存。当你修改代码后SourceTree 会在仓库界面的“文件状态”File Status面板列出变更文件。未跟踪的新文件通常带问号已修改文件显示为蓝色新增文件是绿色删除文件是红色一目了然。点击某个文件右边会展示这份文件的具体改动内容点击“暂存选中”Stage Selected或文件前面的加号就把这个文件放到了暂存区。如果你想一次性全暂存可以点击“暂存所有”Stage All。暂存完成后填一个规范的提交信息点击“提交”按钮改动就保存到了本地仓库。注意提交之后还没到远程需要点击顶部工具栏的“推送”Push按钮把本地提交上传到远程仓库。首次推送某个新分支时SourceTree 会询问推送到哪个远程分支一般直接选择同名的远程分支即可。推送成功后再看远程仓库就能看到你的提交了。这里顺便提一个很容易混淆的概念获取Fetch和拉取Pull。Fetch 是把远程仓库的最新状态下载到本地但它不会改动你当前的工作区相当于只是“看一眼”远程发生了什么Pull 则会真正把远程的新提交合并到当前分支可能会引发冲突。SourceTree 把这两个操作分开放在“拉取/获取”按钮下日常使用建议先 Fetch 查看远程有没有新东西确认没问题再拉取避免远程已经变化不小而你一头撞上去。3.3 分支管理新建、切换与合并分支操作是 SourceTree 最大的亮点图形化之后我几乎没见过谁还能搞混。新建分支很简单点击工具栏的“分支”Branch按钮输入分支名比如feature/login然后确认从哪个提交点建立新分支。默认是从当前所在分支的最后一次提交创建。创建后 SourceTree 会自动切换到新分支这就是所谓的“检出”Checkout。也可以不自动切换只创建不切过去适合批量建分支的场景。切换分支更简单直接双击左侧分支列表里的分支名即可。但这里有个非常重要的前提如果当前工作区还有未提交的改动切换分支时 SourceTree 会弹窗提醒。通常建议先提交当前改动或者使用下面要讲的贮藏功能保证工作区干净再切换否则容易把改动带到别的分支上去。合并分支同样是右键操作。比如想把feature/login合并到main先双击切到main然后在左侧仓库栏右键feature/login选择“合并 feature/login 到当前分支”Merge feature/login into main。如果两个分支的提交历史没有分叉Git 会做 Fast-forward 合并直接移动指针如果分叉过SourceTree 会生成一个合并提交提交信息可以自己改。合并完成后分支图会清楚地展示两条线汇合。分支合并完如果不再需要右键“删除”即可SourceTree 会提示该分支是否已合并已合并的分支可以安全删除。3.4 贮藏Stash临时保存半成品工作的正确姿势贮藏是我最想让新人掌握的功能因为它在日常切换任务时简直救命。场景很常见你在feature/login上改登录页改了一半代码还没写完、也不能提交突然线上出 bug 需要立刻切到main去修。直接用git stash在命令行操作对新手不够友好SourceTree 把这条流程做得非常顺。操作是这样的在“文件状态”面板里右键想要保存的未提交文件或者直接全选选择“贮藏”Stash。弹窗里可以填写贮藏说明强烈建议写清楚“当前做了什么、改到哪一步、为什么暂停”因为贮藏列表会不断积累不写清楚过几天自己都认不出来。在弹窗底部有一个“包含未跟踪文件”Include untracked files的选项这个很关键——默认情况下Git 贮藏不会包含新建的未跟踪文件如果你新建了一个文件并且也想一起保存务必勾上否则工作区还会残留这个新文件。确认贮藏后工作区会变得干净可以放心切换分支、修 bug、发版本。等想恢复当时的工作时点击窗口左下角“贮藏”Stashes标签找到对应记录右键选择“应用贮藏”Apply Stash改动就会恢复到工作区同时这条贮藏记录会保留如果你确定不再需要这份临时保存可以选择“删除贮藏”Drop Stash把它清掉。应用贮藏后如果当前分支恰好有类似改动可能会产生冲突处理方式和普通冲突一样。4. 进阶操作冲突解决、历史追溯与日常技巧当你能熟练完成克隆、提交、推送、切分支基本就可以应付日常开发了。但真正检验你 Git 水平的往往是冲突解决和历史追溯。这一节把处理流程拆开讲每个步骤尽量还原我当时遇到这些场景时的第一反应。4.1 合并冲突看标记、选保留、标记已解决合并冲突听上去吓人本质就是两个分支对同一处代码做了不同修改Git 不知道该听谁的。常见于多人协作时同时改了同一个文件的相近位置或者本地修改和远程提交重叠。在 SourceTree 里遇到冲突最直观的表现是合并或拉取中断文件状态面板出现带感叹号的文件通常还会标红。此时不要慌先双击冲突文件打开看内容。文件内部会出现冲突标记长这样 HEAD const userName user.name; const displayName user.nickname || user.name; feature/login HEAD到之间是当前分支HEAD里的内容到 feature/login是另一个分支的内容。你要做的就是把两边内容合并成最终想要的样子比如保留两者优点然后删除所有的、、标记行保存文件。如果不需要另一边直接删掉对应段即可。保存完文件后回到 SourceTree 的文件状态面板右键这个冲突文件选择“标记冲突已解决”Mark Resolved。把所有冲突文件都处理完再执行一次提交这个合并提交就完成了。SourceTree 还支持在“工具 - 选项 - 比较”中配置外部合并工具比如 VS Code、Beyond Compare、KDiff3遇到复杂冲突时可右键选择外部工具进行三方对比合并左边是当前分支中间是合并结果右边是另一个分支比纯手工编辑看得更清楚。我第一次遇到一堆冲突文件时就是靠着外部工具逐个解决的效率提升非常明显。4.2 用历史视图做代码追溯代码追溯是每个开发者的刚需某行代码到底是谁、在什么时间、因为什么改动引入的要么定位 bug要么做代码审查都得往回翻历史。SourceTree 的 Log / History 视图会把提交历史按时间倒序排好每个提交显示作者、时间、提交信息。点击任意提交右侧面板会列出该提交涉及的所有文件双击某个文件可以看到这个提交里文件的具体差异。配合分支图你还能看出这个提交属于哪条分支、经过了几次合并这对理解项目演进很有帮助。要查某个文件的“前世今生”可以直接在文件状态或历史面板右键该文件选择“文件历史”File HistorySourceTree 会筛选出只涉及这个文件的所有提交。更狠的是 Blame 功能有的版本叫“以注释模式查看”它会给每一行代码标注上最后一次修改它的提交、作者和日期定位“哪一行是谁加的”特别方便。我排查历史遗留 bug 时经常是先 Blame 锁定行再看对应提交信息很快就能判断出改动意图。如果想撤销某次提交的改动不太确定的时候不要乱用 reset硬回滚历史对于团队协作非常危险。SourceTree 里右键某个提交选择“还原提交”Revert 反转提交会更安全它会生成一个新提交把这个旧提交造成的改动反向抵消掉历史记录保持完整远程推送也不会弄得大家都不愉快。4.3 忽略文件和几个提升效率的小技巧日常开发中总有一些文件不希望进入版本管理比如编译产物、本地配置文件、IDE 设置等。SourceTree 里可以直接右键一个文件选择“忽略”Ignore弹窗里可以选择忽略这个文件、忽略所有同名文件或者忽略所在目录。忽略操作会修改仓库里的.gitignore文件这个文件建议提交到远程让全团队共用同一套忽略规则避免你把本地的 log、缓存目录误提交上去。# 常见的 .gitignore 片段 node_modules/ dist/ .env.local *.log另一个我经常用的细节是在 Log 视图中可以用快捷键快速搜索提交信息或作者仓库提交量大的时候效率很高。还有“外部对比”External Diff按钮点击后会用你配置的外部 diff 工具打开当前文件差异视觉上比内置 diff 更细致适合仔细 review 较大改动。这些功能单个看不起眼但在真实工作流里每省几秒钟都是实打实的提升。5. 高频问题排查实录从认证失败到卡顿闪退用过一段时间 SourceTree 之后谁都会遇到几个脏活累活。我根据自己实际踩坑和一些朋友遇到的问题挑了一些高频场景整理出来。这些都来自真实经历比常规文档里的排错表更接地气。5.1 登录和账号相关的坑所有人刚装 SourceTree 都会遇到的第一个问题登录 Atlassian 账号。有人没注意到 Skip 入口硬是注册了半天账号也有人登录页面一直转圈打不开怀疑自己电脑坏了。实际情况通常是网络波动或者 Atlassian 的验证服务在部分地区响应慢。建议直接跳过登录后续真正需要的时候再通过“工具 - 选项 - 身份验证”Authentication添加账号。已经跳过登录后来又想连远程仓库可以在身份验证页面里添加账号支持 Bitbucket、GitHub、GitLab 等一般选择 OAuth 授权会更省心SourceTree 会帮你保存临时凭证。如果用的是自己搭建的 GitLab支持 HTTP Basic 认证填用户名和私有访问令牌Personal Access Token即可密码通常不是账号密码而是令牌。还有一个小坑是登录成功后SourceTree 偶尔会出现“你已登出”的提示尤其是长时间不打开的情况下。重新走一遍 OAuth 授权一般就能恢复远程仓库的本地凭据一般不受影响不用太担心。5.2 克隆、推送报错与认证配置克隆私有仓库时最烦的报错是fatal: unable to access https://...: SSL certificate problem。我在帮同事排查过程中发现80% 的情况是他电脑上装了代理类工具Git 的 SSL 校验被干扰了。此时不要直接去搜“关闭 SSL 验证”然后不假思索照抄那会把本机 Git 的安全性降得很低。正确做法是检查网络代理设置或者让运维给仓库配上正确的证书链。如果确实是在公司内网用自签证书才应当由管理员统一配置证书信任而不是去关掉校验。认证失败的另一个源头是凭据管理器冲突。Windows 下Git for Windows 自带的凭据管理器和 SourceTree 自带的凭据存储偶尔会“打架”表现为每次推送都弹账号密码或者明明输对了却反复失败。解决办法是在“工具 - 选项 - 身份验证”里删掉旧的账号信息重新添加一次或者干脆统一改成 SSH 方式一劳永逸。使用 SSH 克隆、推送时需要先配好 Key。在 SourceTree 的“工具 - 选项 - 身份验证”里有 SSH 配置区可以选择使用 OpenSSH 还是 PuTTY一般选 OpenSSH 就行Windows 10 及以上系统都自带 OpenSSH 客户端。如果你之前自己在命令行生成过~/.ssh/id_rsa.pub把公钥内容添加到托管平台的 SSH Keys 设置里然后在 SourceTree 里指定私钥路径即可。配置好后推送不会再反复验证而且比密码方式更安全。5.3 行尾符和编码问题Windows 用户最容易踩的雷Windows Git 有一个特别经典的坑明明只改了一行代码提交时却显示整个文件都被改动diff 里红红绿绿一大片。这个问题的元凶通常是行尾符Line Ending。Git 默认在 Windows 下会把仓库里的 LF\n转换成 CRLF\r\n供编辑器使用提交时再转换回 LF。如果团队里有人设置了不同的 core.autocrlf或者有文件本身混用了行尾符就会导致 Git 认为整个文件都变了。在 SourceTree 里遇到这种情况不要一行一行去 diff 里找差异大概率是行尾符批量变化。解决思路是统一团队规则在仓库根目录放一个.gitattributes文件固定行尾策略# 统一使用 LF 行尾文本文件在检出时按平台转换 * textauto *.js text eollf *.ts text eollf *.json text eollf *.md text eollf如果已经有大量文件被错误提交可以先用命令行做一次规范化git add --renormalize . git commit -m chore: normalize line endings此外还有中文文件名或内容乱码的问题。SourceTree 本身对中文支持还算不错但如果你用的是老版本或者仓库里的文件编码是 GBK而 Git 默认按 UTF-8 处理就会出现乱码。建议所有项目统一 UTF-8 编码乱码问题自然消失。5.4 卡顿、闪退与配置重置SourceTree 有时候会变卡最常见的原因是仓库太大、分支太多或者项目里文件数量爆炸。解决优先级从低到高关掉不需要的仓库标签页只保留当前项目在 Log 视图里取消勾选“显示所有分支”View All Branches只显示当前分支减轻渲染压力关闭“文件状态”面板里的自动刷新手动刷新。这几个设置都能明显改善大仓库下的卡顿。如果你遇到了打开就闪退的重度问题可以重置配置先备份 SourceTree 里的书签和仓库列表可以在“工具 - 选项 - 常规”里找到配置目录Windows 一般在%LocalAppData%\Atlassian\SourceTree然后把配置目录备份后删除重新启动 SourceTree。它会重新走一遍初始化流程恢复正常。这个小手段解决过不少奇怪的闪退和界面错乱问题。6. 一些真实使用建议和团队配合经验最后这部分不是什么标准教程内容更多是我个人结合项目管理和团队协作的一些体会供你参考。6.1 哪些操作别硬用 GUI虽然我一直推荐 SourceTree但也要承认有些操作用命令行效率更高。比如交互式 rebase把多个提交整理成更干净的提交历史SourceTree 虽然能启动 rebase但真正做 squash、reword 的时候还是在终端里交互更快。再比如涉及 submodule 增删、批量 cherry-pick 多个提交命令行配合脚本要可靠得多。这些都属于熟练之后才会遇到的高级需求前期在 SourceTree 里完全够用不用焦虑。我想表达的是SourceTree 和命令行不是二选一的关系。熟练了以后完全可以配合使用常规的提交、推送、分支管理用 SourceTree 的点选操作遇到批量操作或特殊场景就打开 SourceTree 里自带的终端按钮在仓库目录下直接敲命令。两条路互相补充比死磕一种方式舒服得多。6.2 团队协作怎么和 SourceTree 配合更顺团队用 SourceTree 这类图形化工具最怕的是每个人都有自己的理解分支命名、提交规范乱七八糟。我的经验是工具只是抓手更重要的是团队约定。建议在项目一开始确定分支模型比如 Git Flow 还是主干开发统一分支命名前缀比如feature/、bugfix/、release/并规定提交信息格式比如feat: 新增登录功能、fix: 修复接口超时。规范一旦建立SourceTree 的分支图会非常清爽新人看历史也容易理解。还有一个很实用的协作习惯每次开工之前先点击“获取”Fetch看看远程有没有新提交避免在过期代码上开发太久。多人同时开发一个文件时也建议先推送自己的分支再请求合并而不是长期囤积本地提交不然合并冲突一下子来了七八个文件处理起来真的会烦躁。SourceTree 的远程分支列表会实时显示 origin 上的各分支状态多看一眼能省去大量不必要的冲突。6.3 我用 SourceTree 的一些细节习惯最后分享几个我比较个性化的使用细节。第一我喜欢在 SourceTree 的“工具 - 选项 - 比较”里把外部 diff 工具设为 VS Code这样双击 diff 时可以直接用 VS Code 打开看代码上下文更舒服。第二贮藏功能我会当成一个临时的“任务切换器”用切换任务前习惯性CtrlShiftO打开仓库、右键贮藏养成习惯后很少因为手滑把半成品提交到错误分支。第三被忽略的“标签”Tag功能很重要发版时打 tag后面回溯某个版本的代码非常方便强烈建议团队每次发布都在 SourceTree 里打一个版本标签。写到这想起一个真实场景。我之前带过一个刚接触 Git 的实习生他连git status都不认识我直接让他从 SourceTree 开始先看工作区、暂存区、提交历史长什么样结果半天就理解了主干、分支、提交这些概念第二天已经能独立把代码提交推送得井井有条。反而是我这种用命令行用了很多年的人偶尔还会切回终端敲两下倒不是 GUI 不好用纯粹是习惯。如果你刚接触 GitSourceTree 真的能帮你建立一个特别直观的心智模型等以后需要批量操作或者脚本化的时候再捡起命令行也不迟两条路互相补充比一开始就死磕命令行舒服得多。