ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Sourcetree完整教程:从安装配置到Git分支冲突解决实战

Sourcetree完整教程:从安装配置到Git分支冲突解决实战 Sourcetree 是我这几年在团队项目里用得最顺手的 Git 图形化客户端没有之一。它把 Git 那些抽象的命令行操作变成了看得见的按钮和面板提交、推送、拉取、解决冲突都不用再对着黑窗口发怵。这篇教程我会把 Sourcetree 从安装到日常使用完整过一遍包括很多新手最容易卡住的“用户设置必须被修复”报错、SSH 密钥配置、以及回退代码到指定提交这些高频场景全部按图索骥讲清楚保证你看完能直接上手。写这份教程的初衷很实在我带过几届新人亲眼见过有人因为不会用 Git 把项目搞崩了也见过聪明人用了 Sourcetree 之后一小时就熟练上手。所以说它天生就是面向团队协作的工具尤其适合刚接触版本控制的人以及那些每天要和大量分支、冲突打交道的开发老手。新手用它减少认知负担老手用它提高日常操作效率各取所需。1. 先把 Git 装好Sourcetree 只是图形界面Git 才是引擎1.1 理解 Sourcetree 和 Git 的关系很多第一次接触 Sourcetree 的人会以为安装了它就不需要 Git 了这是最大的误解。Sourcetree 本质上是 Git 的一个图形化客户端它负责把 Git 命令翻译成你点得着、看得见的界面操作但底层执行版本控制逻辑的仍然是 Git 本身。你可以把 Git 想象成汽车的发动机Sourcetree 就是仪表盘和中控屏屏幕再好看底下没发动机一样跑不起来。所以在安装 Sourcetree 之前必须先确保电脑上装好了 Git。如果你用的是 Windows直接去 Git 官网下载安装包如果在 macOS 上系统可能自带了一个旧版 Git但版本往往不够新建议也去官网装一个最新版本避免后边 Sourcetree 调用系统旧 Git 时出现兼容性问题。当然Sourcetree 在安装时也可能自带一个嵌入式的 Git但那是备选方案它启动时会优先调用系统里的 Git所以还是老老实实先把 Git 独立装好比较省心。1.2 Windows 系统安装 Git 的具体步骤Git 的官方下载地址是 git-scm.com打开页面后会识别你的操作系统直接点击 Windows 对应的下载按钮拿到一个 exe 安装包后双击运行。安装过程整体就是一路“Next”但还是有几个关键选项建议认真对待这里我把我实际安装时的选择列出来安装路径默认的C:\Program Files\Git就好不要放到中文路径或带空格的奇怪目录下免得后面 Sourcetree 找不到路径。选择组件默认勾选的项目建议保持全选特别是“Git Bash Here”和“Git GUI Here”这两个右键菜单项后面排查问题的时候有用。默认编辑器这里默认是 Vim如果你不熟 Vim 可以改成 Nano 或者其它你熟悉的编辑器但说实话我们平时在 Sourcetree 里改文件更多这里选哪个并不太影响日常。调整 PATH 环境这一项很关键务必选择“Git from the command line and also from 3rd-party software”。这个选项会把 Git 的可执行路径写进系统 PATHSourcetree 才能正确找到 git.exe。换行符转换方式选中第一个“Checkout Windows-style, commit Unix-style line endings”。这是跨平台项目兼容性最好的选项Windows 环境下检出文件会转成 CRLF提交到仓库时统一转成 LF避免整个文件被标记为改动。SSH 可执行文件选择“Use OpenSSH”这样 Sourcetree 在调用 SSH 认证时能和系统 OpenSSH 配合得更顺滑。每个界面上都会问让你确认不用太担心真正的关键就那两个PATH 选项和换行符选项。其余全部默认即可。安装完成后按Win R输入cmd打开命令行敲一下git --version如果能正常显示 git 版本号说明安装成功。1.3 顺手配置全局用户信息安装完 Git 之后其实还差一步就是要设置全局的用户名和邮箱。不设置的话Git 不允许你做任何提交这也是 Sourcetree 经常报“用户设置必须被修复”的根本原因。在命令行里执行下面两行git config --global user.name 你的名字 git config --global user.email 你的邮箱example.com这里的邮箱建议填你注册代码托管平台比如 GitHub、GitLab、Gitee时用的同一个邮箱这样每次提交记录都会正确关联到你的账号头像和主页方便团队协作时看清是谁改的代码。2. Sourcetree 下载与安装过程2.1 官网下载与版本选择Sourcetree 的官网是 sourcetreeapp.com它由 Atlassian 公司开发和维护属于完全免费的软件这点对个人和中小企业都特别友好。打开官网后会自动识别操作系统分别提供 Windows 版和 macOS 版下载。需要注意如果你从第三方下载站下载可能会捆绑一些乱七八糟的东西强烈建议只走官网或微软商店微软商店里也有 Sourcetree 的官方版本更新起来还会方便一点。版本选择上Windows 用户优先下载当前最新的稳定版。Sourcetree 的更新频率不算特别高但老版本在 Windows 11 上偶尔会有界面缩放模糊、卡顿这类问题新版本基本都修复了。我自己的经验是如果团队里有人用 Windows 11Sourcetree 版本尽量保持在 3.4.10 以上否则某些右键菜单操作可能会直接没响应。2.2 Windows 安装的完整流程下载下来的安装包一般是SourcetreeSetup-x.y.z.exe格式双击运行后会出现一个安装向导。新版本安装过程中会问你要不要安装随附的 Git如果你已经按照前面第 1 节装好了独立 Git这里可以取消勾选避免出现两个 Git 互相抢资源的情况。安装界面会依次弹出几个步骤主要就是同意许可协议、选择安装位置。安装位置建议保持默认强烈不建议装在中文路径下。Sourcetree 的界面默认是英文的但国内的开发社区有提供汉化语言包虽然 Atlassian 官方也支持中文界面但得在 Tools 菜单下的选项里手动调整语言或者在安装后重新配置。这一步不着急装好之后再折腾也不迟。安装过程结束后桌面上会出现 Sourcetree 的图标双击启动后它会进入首次使用的引导流程。这里你可能会遇到它提示“没有找到 Git”那就回头看第 1 节确认 Git 是否真的装好了、PATH 是否配置正确。最常见的坑是用户装完 Git 后没重新打开 Sourcetree或 PATH 选项没选对导致 Sourcetree 检测不到 Git。2.3 macOS 安装与首次启动macOS 用户拿到的是 dmg 安装包双击后把 Sourcetree 图标拖进 Applications 目录就可以。首次启动时Sourcetree 会要求你用 Atlassian 账号登录或者注册一个新账号。这一步其实是为了给你发送免费的 Sourcetree 许可证Sourcetree 本身免费但需要走一个授权流程。如果你不想填太多东西也可以直接选择“Skip this step”跳过大多数情况下跳过登录依旧能用只是用完 30 天试用期会再次提示你需要完善许可证届时再登录一次即可。启动后的界面整体比较简洁左侧栏从上到下是仓库列表、文件状态、历史记录和分支信息。第一次打开时它可能会弹出一些教程提示和工具推荐比如建议你安装 Mercurial 支持模块这东西现在是可选的日常用 Git 的话直接忽略就可以没必要额外给自己添负担。3. 关键配置修复用户设置与生成 ed25519 SSH 密钥3.1 解决“用户设置必须被修复”报错很多人在 Sourcetree 里点击“克隆/新建”准备拉取项目时会突然弹出一个红底提示框标题就是“用户设置必须被修复”。这个报错的核心原因很简单Git 在全局配置中没有找到 user.name 和 user.email。Git 的规则是提交必须有作者信息否则不允许提。Sourcetree 检测到你的 Git 缺少这两项配置就会主动跳出来提醒你修。处理办法有两种。第一种在弹出窗口里直接点“修复”然后在弹出的设置面板里填上姓名和电子邮箱保存即可Sourcetree 会把它们写入全局 Git 配置。第二种你已经在命令行里执行过第 1.3 节的git config --global命令那么这个报错自然就消失了。我个人更推荐用命令行来修因为可以顺手用git config --global --list检查一下配置结果心里更踏实。如果还是不断报这个错最常见的两个原因一是设置邮箱时手滑输错格式Git 不认二是你设置了局部仓库的 user但没有设置全局的。Sourcetree 检测的其实是全局配置仓库内配置它不一定认。总之让全局配置里有合法的 user.name 和 user.email问题就能彻底解决。3.2 为什么要用 ed25519 密钥配置 SSH 密钥是连接代码托管平台最安全、最省心的方式。只要把公钥放在远端平台本地推送和拉取就不用反复输密码了。现在主流代码平台对 SSH 密钥算法的要求也在逐步提高GitHub 官方在 2022 年之后已经弃用了一些旧算法而 ed25519 因为安全性高、性能好、生成的密钥长度短成了当前的开荒首选。只要你用的 Git 版本在 2.32 以上、OpenSSH 版本在 6.5 以上都能正常生成和使用 ed25519 密钥。如果系统提示不支持ed25519说明 OpenSSH 太旧这时候退而求其次用 RSA 4096 位也行命令是ssh-keygen -t rsa -b 4096。但如果是刚装的 Git直接上 ed25519 没有任何问题。3.3 生成密钥并在托管平台配置公钥生成过程很简单打开命令行输入ssh-keygen -t ed25519 -C 你的邮箱example.com按下回车后会问你密钥保存位置默认是C:\Users\你的用户名\.ssh\id_ed25519直接回车即可。随后会让你设置一个 Passphrase这个是给你的私钥加一道密码锁考虑到日常使用的便利性很多人会直接留空。然后系统会生成两个文件带.pub后缀的是公钥另一个是私钥。这个私钥就相当于你账号的钥匙千万别发给任何人也别传到公开仓库里。生成完公钥后打开id_ed25519.pub复制里面的全部内容到托管平台上去添加 SSH 公钥。以 GitHub 为例路径是右上角头像 → Settings → SSH and GPG keys → New SSH key粘贴保存GitLab 是头像 → Preferences → SSH KeysGitee 是安全设置 → SSH 公钥。添加完成后在命令行里执行ssh -T gitgithub.com测试连接如果返回 “Hi xxx! Youve successfully authenticated”说明 SSH 已经通了。最后回到 Sourcetree在 Tools → Options → Authentication 页面里点击 Add AccountHost 选择对应的平台GitHub、Bitbucket、GitLab 等Auth Type 选 SSH然后选择你的私钥文件路径Sourcetree 会自动加载。如果你设置了 Passphrase这里会要求输入。第一次连接远端时Sourcetree 会弹出 SSH 指纹确认对话框点击“是”即可。4. 克隆仓库与日常提交推送全流程4.1 从远程克隆仓库到本地环境配置好之后第一个正式操作就是克隆仓库。打开 Sourcetree点击“Clone”按钮或者菜单栏 File → Clone会弹出一个克隆对话框。你需要填三个关键信息源 URL、本地保存路径、分支名称。源 URL 可以从代码托管平台的仓库主页复制支持 HTTPS 协议也支持 SSH 协议。这里顺便说一下两种协议的区别HTTPS 第一次推送会要求输入账号密码之后 Sourcetree 通常会把这些凭据存到系统的凭据管理器里后续自动使用SSH 则需要前面配置好的密钥全程无需输入密码。绝大多数场景我更推荐 SSH省心。克隆的时候Sourcetree 会把远程仓库的完整历史下载到本地这个过程根据仓库大小耗时不等。界面上你会看到进度条和下载对象数。克隆完成后仓库会自动出现在左侧列表里双击就能切到仓库工作台界面。4.2 提交代码理解暂存区提交Commit是 Git 使用频率最高的操作之一。你在本地改完代码后Sourcetree 的“文件状态”面板会立刻显示哪些文件被修改了、哪些是新增文件。界面中间有一道分界线上半部分是“未暂存文件”下半部分是“暂存区域”。提交之前必须先“暂存”文件这个设计很多人刚接触时不理解其实它给了你一个很精细的控制权。举个例子你同时改了登录接口和订单接口但你只想先提交登录接口的改动那就可以只把登录相关的文件拖到暂存区域或者右键单个文件选择“暂存”然后单独提交这一部分。这就是为什么我说暂存区有点像餐厅点菜不是所有菜都一股脑下锅而是先挑出你想吃的那几道。仓促地“暂存全部”然后一次提交看起来省事但会把不相关的改动搅在一起后期代码回溯时非常痛苦。暂存完成后在右下角的提交信息框里写清楚本次改动的内容点击“提交”按钮。提交规范建议参考团队约定一般格式是fix: 修复登录超时问题或者feat: 新增订单导出功能清晰描述远比啰嗦强。提交只是提交到了本地 Git 仓库远程仓库那边还看不到所以还需要推送。4.3 拉取与推送的正确姿势推送Push就是把本地已提交的代码同步到远端。在 Sourcetree 工具栏上点击“推送”按钮选择要推送的分支确认后代码就上去了。这里有个特别容易踩的坑推送前一定要先拉取远程的最新代码否则可能因为远端有别人推了代码而推送失败。拉取Pull在 Sourcetree 里默认执行的是fetch merge的合并操作。说直白点就是先把远端的新提交下载到本地然后自动把当前分支和远端分支合并到一起。我个人养成的习惯是每天开始工作前先“拉取”一次工作结束后提交并推送推送如果提示非快进式更新non-fast-forward千万不要慌先拉取再推送通常就能解决。工具栏上还有一个按钮叫“获取”Fetch它只下载但不合并适合你只想看远端有没有新提交但又不想立刻合入的场景。理解这三者区别基本上日常最常用的命令就稳了。5. 分支管理、解决冲突与代码回退实操5.1 分支的创建、切换与合并分支是 Git 协作的灵魂。整个团队的代码库就像一个主干道每个人都应该在自己的支路上施工完工后再并回主干道避免互相干扰。Sourcetree 里分支的创建很简单点击顶部“分支”按钮输入分支名称比如feature/add-login点确定就会基于当前所在的提交创建新分支。通过双击左侧分支列表里的分支可以实现在不同分支之间切换。日常协作推荐的分支流程是这样的不直接在main或master上开发每次功能都从主干拉一个功能分支开发完成、测试通过后合并回主干。Sourcetree 里合并分支的操作是先切回到目标分支比如 main然后右键点击要合并的分支选择“合并”即可把该分支的改动并入当前分支。合并完成后可以把临时功能分支删除保持分支列表干净。这里要掌握一个容易混淆的概念本地分支和远程分支是分开显示的。本地分支是你电脑上的远程分支以origin/前缀显示表示远端仓库的状态。推送或拉取实际上是本地分支和远程分支之间的同步动作。5.2 解决冲突的完整流程在多人同时改同一个文件时合并冲突几乎不可避免。Sourcetree 对冲突文件的处理做得很直观出现冲突的文件在文件状态面板里会带有黄色感叹号图标右键文件可以看到“解决冲突”的子菜单。冲突的本质是两边的提交都修改了同一个文件的同一片区域Git 不知道应该保留谁的代码。解决冲突有两种常见路径手动编辑或使用外部合并工具。手动编辑是基础功打开冲突文件你会看到这样的标记 HEAD 这是当前分支的内容 这是被合并分支的内容 feature/add-login你需要做的就是决定最终保留什么把多余的标记和不需要的内容删掉。比如两边逻辑其实是互补的那就把两者都保留删掉、、这三行标记保存文件。回到 Sourcetree右键该文件选择“标记为已解决”然后提交合并结果即可。如果是更复杂的冲突建议配置外部合并工具Beyond Compare 和 KDiff3 都是不错的选择。在 Tools → Options → Diff 里指定外部工具路径后右键冲突文件 → 解决冲突 → 启动外部合并工具就可以借助差异比较界面直观地选择左右两侧的改动并生成合并结果。对于新手来说图形化合并工具的上手曲线比直接看冲突标记友好太多。5.3 代码回到指定提交的三种方法工作中最常遇到的回退场景是上线了个新功能结果线上出了 bug需要快速把代码回退到之前某个稳定版本。Sourcetree 里可以通过“重置到提交”来实现右键历史记录里的目标提交选择“重置到提交”。此时会弹出一个对话框让你选择重置模式软重置Soft保留该提交之后的所有改动并把它们放进暂存区适合你想重新整理提交的场景。混合重置Mixed保留改动但不放到暂存区方便你重新选择哪些改动要提交。硬重置Hard直接丢弃该提交之后的所有改动这个操作最危险一旦执行那些未保存的修改会彻底丢失。如果你只是想临时验证一下某个历史版本的代码更稳妥的办法是右键目标提交选择“检出”让 Sourcetree 进入“游离头指针”状态此时的历史代码可以运行时验证但不会影响当前分支。如果想在此基础上继续开发可以在该提交上新建一个分支然后切过去。绝对要记住的教训是对已经推送到远程的共享分支做硬重置会覆盖掉远端的记录可能导致队友的提交“消失”这种误操作在团队里经常引起慌乱。正确的回退思路是先用新分支承接修复再通过正常的合并流程发布实在不行也要明确告知团队后再强推。6. 常见问题速查与实用经验6.1 高频报错排查对照表现象原因解决办法“用户设置必须被修复”Git 缺全局 user.name / user.email命令行执行git config --global配好Windows 11 下界面卡顿、空白Sourcetree 版本过旧升级到 3.4.10 以上必要时关闭硬件加速推送时提示认证失败Token 过期或密钥未识别重新生成 Token或在 Authentication 里更新账号SSH 提示 Permissions too open私钥文件权限过大Windows 上在.ssh目录右键私钥文件 → 属性 → 安全收紧权限中文文件名显示乱码Git 默认转义非 ASCII仓库目录执行git config core.quotepath false合并时大量“文件被修改”换行符策略不一致统一 Git 安装时的换行符选项或配置.gitattributes克隆慢或超时网络环境问题或仓库过大尝试将仓库切到国内镜像托管或做浅克隆shallow clone6.2 我踩过的坑和几个实用建议第一永远不要对共享分支做硬重置。我见过不止一个同事把 main 分支直接硬重置到了几天前的提交然后为了把远端覆盖回去不得不强制推送结果队友本地和远程的分叉状态变得非常混乱。如果你真的需要丢弃一段提交建议先问团队或者至少先把当前状态打一个标签给自己留条退路。第二提交信息一定要规范。Sourcetree 允许设置提交模板你可以在项目根目录创建一个.gitmessage文件写下团队约定好的格式模板然后在 Sourcetree 的提交面板里直接套用。模板的意义是让团队历史保持可读性后续回溯代码时能通过fix:、feat:前缀快速筛出想要找的提交。第三善用“捡起”功能。Sourcetree 对 cherry-pick 的翻译是“捡起”它可以把其他分支上的某一次或某几次提交原样复制到当前分支。比如线上紧急修复了一个 hotfix需要把它同步到开发分支但又不想把整个 hotfix 分支合并过去这时右键目标提交 → “捡起提交”即可非常方便。第四遇到 Sourcetree 本身白屏或启动崩溃时除了更新版本还可以尝试清理缓存目录。Windows 上这个目录一般是%LocalAppData%\Atlassian\SourceTree.exe_Url把里面的缓存清掉后重启 Sourcetree很多诡异问题都能走通这条路。这种方法比重装节省大量时间我实测过多次。6.3 最后再分享一个经验习惯我每次教完新人配置环境后都会让他们用 Sourcetree 自己完整走一遍“克隆 → 新建分支 → 修改 → 暂存 → 提交 → 推送 → 合并”的闭环以及刻意制造一次冲突亲手解决。这个过程看起来简单但走一遍后基本就不会再怕 Git 了。工具终究是工具真正值钱的是你对工作流的理解比如什么时候该建分支、什么时候该合并、什么时候不该强推。把 Sourcetree 当成你的辅助驾驶先把流程开顺后续哪怕切回命令行也会觉得一切都是水到渠成的事。
返回列表