ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

SourceTree 安装配置与 SSH-Key 实战:从 Git 图形化到命令行过渡

SourceTree 安装配置与 SSH-Key 实战:从 Git 图形化到命令行过渡 1. 为什么我至今还在用 SourceTree 管理 Git 仓库刚入行那会儿团队里一位老哥看我对着命令行敲git status一脸茫然直接甩给我一个安装包说“先用这个把提交、拉取、合并搞明白了再回去敲命令”。那个安装包就是 SourceTree。一晃这么多年过去命令行我早就用顺了但 SourceTree 依然留在我每台工作机的任务栏里——不是因为它比命令行强而是因为可视化地看分支拓扑、逐行暂存、处理冲突这几件事它确实省心。这篇内容就是把我这些年安装、配置、踩坑、迁移的完整经验整理出来。SourceTree 是一款免费的 Git 图形化客户端由 Atlassian 出品支持 Windows 和 macOS能管理本地仓库、连接 GitHub、Gitee 等托管平台也能通过 PuTTY 或 OpenSSH 处理密钥认证。它解决的核心问题是让不熟悉 Git 命令的人也能完成日常的版本控制操作同时给老手提供一个直观的仓库总览面板。适合谁看如果你是刚接触 Git 的新手跟着走一遍就能把环境搭起来如果你已经会用命令行但想找个顺手的 GUI 辅助工具这里关于 SSH-Key、PuTTY 配置和常见报错的部分同样能帮到你。我会把每一步为什么这么做讲清楚而不是只丢一串截图让你照抄。2. 安装前的环境准备与工具选型2.1 Git 本体必须先装别指望 SourceTree 自带很多人以为装了 SourceTree 就万事大吉结果第一次打开就提示找不到 Git。SourceTree 本质上是个“壳”它调用的是系统里的 Git 可执行文件。所以第一步永远是先装 Git 本体。Windows 下去 Git 官网下载安装包安装时有个关键选项Adjusting your PATH environment建议选第二项 “Git from the command line and also from 3rd-party software”。这样 Git 会被加进系统环境变量SourceTree 才能自动识别到。如果你选了第一项 “Use Git from Git Bash only”SourceTree 大概率找不到 Git后面还得手动指定路径纯属给自己找麻烦。macOS 用户简单一些装了 Xcode Command Line Tools 就自带 Git终端里敲git --version能出版本号即可。如果没有xcode-select --install一条命令搞定。提示安装 Git 时行尾转换选项保持默认的 “Checkout Windows-style, commit Unix-style line endings” 就行跨平台协作时这个默认值最省事。2.2 SourceTree 下载渠道与版本选择SourceTree 官网可以直接下载Windows 和 macOS 版本都有。这里有个坑要提醒官网下载需要填写邮箱等信息才能拿到下载链接而且页面加载有时候比较慢。如果官网访问不畅可以找一些可信的软件分发站点但一定要核对文件签名和版本号别下到捆绑了乱七八糟东西的安装包。版本选择上不建议追最新。SourceTree 有几个版本在 Windows 11 上出现过界面渲染异常的问题稳妥的做法是选一个发布超过一个月、社区反馈稳定的版本。我目前用的是 3.x 系列的一个较新版本在 Win11 上表现正常。安装过程本身没什么好说的一路下一步。但安装完成后第一次启动它会引导你登录 Atlassian 账号。这一步可以直接跳过不登录完全不影响本地使用只是没法用它的云端仓库托管功能而已。跳过之后进入主界面就可以开始配置了。2.3 PuTTY 与 OpenSSH 的选择逻辑这是新手最容易懵的地方。SourceTree 在 Windows 上默认使用 PuTTY 作为 SSH 客户端而 Git 本体自带的是 OpenSSH。两者生成的密钥格式不一样PuTTY 用的是.ppk格式OpenSSH 用的是id_rsa/id_ed25519这种格式。那到底用哪个我的建议是如果你只在 SourceTree 里操作用 PuTTY 更省心因为 SourceTree 对 PuTTY 的集成度最高密钥管理界面直接就能生成和加载.ppk文件。但如果你同时要用命令行 Git那最好统一用 OpenSSH然后在 SourceTree 设置里把 SSH 客户端改成 OpenSSH避免两套密钥来回转换。PuTTY 本身是个独立的 SSH 工具SourceTree 安装时会附带一个精简版的 PuTTY 组件包括 PuTTYgen 密钥生成器。你不需要单独去 PuTTY 官网下载完整版除非你想用 PuTTY 登录服务器做别的事情。热词里提到的“PuTTY 登录堡垒机”那是另一个使用场景跟 SourceTree 关系不大这里不展开。3. SourceTree 核心配置与 SSH-Key 实操3.1 首次启动后的必改设置进入主界面后先别急着克隆仓库有几项设置建议先调好。打开工具 → 选项macOS 是 SourceTree → 偏好设置重点看这几个地方一般选项卡里确认“Git 版本”显示的是你安装的 Git如果显示“未找到”点“浏览”手动指向git.exe的路径通常在C:\Program Files\Git\cmd\git.exe。Git选项卡里填上你的用户名和邮箱这对应git config --global user.name和user.email每次提交都会用到。邮箱建议和你 GitHub/Gitee 账号的邮箱一致这样提交记录才能正确关联到你的账号。SSH 客户端配置里Windows 默认是 PuTTY/Plink保持默认即可如果你要用 OpenSSH就在这里切换。这些设置看着琐碎但用户名和邮箱填错是新手最常见的翻车点——提交了几十次之后才发现 GitHub 上不显示自己的头像和贡献记录回头改起来很麻烦。3.2 用 PuTTYgen 生成 SSH-Key 的完整流程SSH-Key 是连接 GitHub 等平台的凭证配一次能用很久。在 SourceTree 里生成密钥的路径是工具 → 创建或导入 SSH 密钥这会打开 PuTTYgen 界面。操作步骤点击Generate然后在空白区域不停移动鼠标进度条走完就生成好了。鼠标移动是为了给随机数生成器提供熵不动的话进度条不会走。Key comment填一个你能认出来的标识比如work-laptop-sourcetree方便以后在 GitHub 上管理多个密钥时区分。Key passphrase是密钥密码可以留空但建议设一个。设了之后每次推送需要输入一次SourceTree 可以记住。点击Save private key保存为.ppk文件放在一个你不会误删的目录比如C:\Users\你的用户名\.ssh\下。最关键的一步把界面上方那个以ssh-rsa开头的公钥文本完整复制下来后面要粘贴到 GitHub。注意公钥可以随便给人私钥.ppk 文件绝对不能泄露也不要通过聊天工具传来传去。3.3 把公钥配置到 GitHub 与 Gitee登录 GitHub进入Settings → SSH and GPG keys → New SSH keyTitle 随便填Key 类型选 Authentication Key然后把刚才复制的公钥粘贴进去保存。Gitee 的路径类似设置 → SSH 公钥粘贴保存即可。两个平台可以共用同一个公钥不用分别生成。配置完成后怎么验证在 SourceTree 里打开工具 → 选项 → SSH 客户端SSH 密钥那一栏应该已经指向你保存的.ppk文件。如果没指向点浏览选一下。然后可以找个仓库做一次拉取或推送测试能成功就说明密钥配置没问题。热词里有人搜“git 配置 gitee 密钥”其实流程和 GitHub 一模一样只是粘贴公钥的页面不同。国内访问 GitHub 偶尔不稳定Gitee 作为备用托管平台是个务实的选择配置方式完全一致。3.4 远程仓库地址该用 SSH 还是 HTTPS克隆仓库时SourceTree 会让你填远程地址。这里有个选择方式地址格式认证方式适用场景SSHgitgithub.com:user/repo.gitSSH-Key长期使用免密推送HTTPShttps://github.com/user/repo.git账号密码/Token临时克隆公司网络限制 SSH 时我的建议是主力仓库用 SSH配好密钥后一劳永逸。HTTPS 方式每次推送都要输账号密码而且 GitHub 早就不能用账号密码了得用 Personal Access Token反而更麻烦。只有在公司网络封了 22 端口的情况下才退而求其次用 HTTPS。4. 日常操作从克隆到提交的完整链路4.1 克隆仓库与界面功能区速览点击克隆/新建填入远程地址和本地存放路径SourceTree 会自动识别这是 Git 仓库还是 Mercurial 仓库。克隆完成后进入主界面几个核心区域要认识左侧边栏显示本地分支、远程分支、标签、暂存区。分支多的时候可以折叠远程分支减少干扰。中间历史区以图形化方式展示提交历史分支的合并、分叉一目了然。这是 SourceTree 相比命令行的最大优势。右侧文件区显示当前选中提交涉及的文件变更。底部操作区提交信息输入框、暂存按钮、提交按钮都在这里。第一次打开一个陌生仓库我习惯先在历史区扫一眼分支拓扑看看主干和特性分支的关系心里有个数再动手。4.2 暂存、提交与推送的标准流程日常开发的标准动作是改代码 → 暂存 → 提交 → 推送。在 SourceTree 里改完代码后文件会出现在“未暂存文件”列表里。双击文件可以查看具体改动单击文件前面的复选框把它移到暂存区。这里有个实用技巧如果你只想提交某个文件的部分改动可以选中文件后点右上角的“暂存区块”逐块选择要提交的内容。这个功能在命令行里要用git add -pSourceTree 把它图形化了非常好用。暂存完点提交填好提交信息。提交信息别写“update”“fix”这种写清楚改了什么、为什么改。提交后点推送选择目标远程分支确认即可。提示推送前先拉取一次是个好习惯能提前发现冲突避免推送被拒后再手忙脚乱地合并。4.3 分支管理与合并冲突处理新建分支在左侧边栏右键即可SourceTree 会自动帮你切换到新分支。分支命名建议用feature/xxx、fix/xxx这种前缀一眼能看出分支用途。合并冲突是绕不开的。当两个分支改了同一个文件的同一区域合并时就会冲突。SourceTree 会把冲突文件标红右键选择“解决冲突 → 打开外部合并工具”它会调用你配置的合并工具比如 Beyond Compare、KDiff3来可视化解决。如果没配外部工具也可以右键选择“使用我的版本”或“使用对方版本”快速处理。但快速处理有风险可能丢掉对方的改动正式项目里还是老老实实逐行看、逐行合。热词里有人搜“sourcetree 代码回到指定一次提交”这个操作叫reset。在历史区右键某次提交选择“重置当前分支到此次提交”然后选模式Soft 保留改动在暂存区Mixed 保留改动在工作区Hard 直接丢弃所有改动。Hard 模式慎用没提交的改动会永久丢失用之前先确认一遍。4.4 用 SourceTree 管理多个远程仓库一个本地仓库可以关联多个远程比如同时关联 GitHub 和 Gitee。在仓库 → 仓库设置 → 远程仓库里可以添加。添加后推送时可以选择推送到哪个远程拉取时也可以选择从哪个远程拉。这个配置的实用场景是主力代码放 GitHub同时推一份到 Gitee 做备份或给国内同事访问。操作上就是推送两次分别选不同的远程。SourceTree 会记住每个远程的地址和认证方式切换起来不费劲。5. 常见报错与排查技巧实录5.1 连接类问题速查报错信息可能原因解决方向Permission denied (publickey)公钥没配到平台或密钥没加载检查 GitHub 上的公钥、SourceTree 里的 .ppk 路径Could not resolve hostnameDNS 解析失败或网络不通检查网络确认平台域名可访问Connection timed out端口被防火墙拦截尝试 HTTPS 方式或检查公司网络策略Host key verification failed首次连接未确认主机指纹在 PuTTY 里手动连接一次并确认Permission denied是最常见的九成情况是公钥没粘对或者 SourceTree 指向的.ppk文件不是你配到平台上的那个。排查方法在 SourceTree 里打开 PuTTYgen加载你配置的.ppk看上方公钥文本和 GitHub 上的是否一致。5.2 操作类问题与避坑经验推送被拒non-fast-forward说明远程有你本地没有的提交。先拉取解决可能的冲突再推送。别用强制推送force push去覆盖除非你百分百确定远程的改动不要了。提交后发现漏了文件用git commit --amend可以把漏掉的文件补进上一次提交。SourceTree 里对应的是提交时勾选“修改最后一次提交”。但注意已经推送到远程的提交不要 amend否则会造成历史不一致队友拉取时会出问题。换行符导致的整文件变更Windows 和 Unix 换行符不同有时候你只改了一行SourceTree 却显示整个文件都变了。这是行尾转换配置不一致导致的。检查.gitattributes文件或者统一团队的换行符设置。大文件推送失败GitHub 对单文件有 100MB 限制超过会拒绝推送。这种情况要么用 Git LFS要么把大文件移出仓库。SourceTree 对 LFS 的支持一般大文件管理建议还是走命令行。5.3 我踩过的几个真实坑第一个坑在 SourceTree 里改了用户名邮箱但之前提交的记录不会变。提交记录里的作者信息是提交时写死的改配置只影响之后的提交。如果之前提交错了想改得用git rebase重写历史操作复杂且有风险所以一开始就填对最省事。第二个坑PuTTY 密钥和 OpenSSH 密钥混用。我有次在命令行生成了id_ed25519配到了 GitHub但 SourceTree 还在用旧的.ppk结果 SourceTree 一直推送失败命令行却正常。排查了半天才发现是两套密钥的问题。后来统一用 OpenSSHSourceTree 设置里也切成 OpenSSH就再没出过这个问题。第三个坑克隆时选了错误的远程地址。有次复制地址时漏了.git后缀SourceTree 提示仓库不存在。加上后缀就好了。这种低级错误在赶时间的时候特别容易犯克隆前多看一眼地址。6. 从 SourceTree 过渡到命令行的经验用久了 SourceTree你会发现有些操作还是命令行快。比如批量删除已合并的本地分支、查看某个文件的修改历史、用git bisect定位问题提交这些在 GUI 里要么没有要么藏得很深。我的做法是两者结合日常提交、拉取、合并用 SourceTree直观高效复杂操作、批量处理、脚本自动化用命令行。SourceTree 里可以随时打开终端在仓库 → 在终端中打开就能调出当前仓库路径的命令行窗口两边状态实时同步切换毫无成本。热词里有人搜“git 命令”“git 使用教程”说明很多人还是想学命令行的。我的建议是先用 SourceTree 把 Git 的核心概念工作区、暂存区、提交、分支、远程建立起来再去学对应的命令会事半功倍。反过来先啃命令行容易在概念还没理清的时候就被各种参数劝退。SourceTree 的图形化历史视图对理解分支合并特别有帮助。你可以在历史区清楚看到两条分支从哪个提交分叉、又在哪里合并这种空间感是命令行git log --graph给不了的。理解了拓扑结构再去看命令行的输出脑子里自然就有画面了。最后分享一个我常用的技巧在 SourceTree 里配置一个自定义操作把常用的命令行指令挂上去。比如我配了一个“拉取并变基”的操作一键完成git pull --rebase比在界面里点好几步快得多。配置路径在工具 → 选项 → 自定义操作添加时选择“使用 Git 命令”填入命令和参数即可。这个功能用好了能把 SourceTree 和命令行的优势结合起来效率提升很明显。
返回列表