sourcetree是git命令行的图形界面封装,必须正确绑定系统git路径:windows在tools→options→git中勾选use system git并填入c:\program files\git\bin\git.exe,macos将which git输出路径粘贴至preferences→git→path;右键仓库→terminal执行git --version验证版本一致。

SourceTree 不是 Git 的替代品,而是本地 Git 命令行的图形界面封装;所有操作最终都调用 git 二进制执行。没装 Git 或路径配错,git not found 错误会贯穿始终——这是绝大多数问题的起点。
怎么确认 SourceTree 正确绑定了系统 Git
SourceTree 启动后不报错,不代表它真在用你预期的 Git 版本。Windows 和 macOS 都常因路径查找失败而悄悄回退到内置精简版(功能残缺、不支持中文路径、无 credential helper),导致后续 push/fetch 失败或乱码。
- Windows:打开 Tools → Options → Git,勾选 Use System Git,手动填入路径,例如
C:\Program Files\Git\bin\git.exe(注意不是cmd\git.exe) - macOS:终端运行
which git,复制输出(如/opt/homebrew/bin/git),粘贴到 Preferences → Git → Path to Git - 验证方式:任一仓库中右键 → Terminal,执行
git --version,输出必须与终端一致;否则git config --global credential.helper、git push等行为都会失效
为什么 Push 总卡住或提示 authentication failed
这不是 SourceTree 的 bug,而是 Git 凭据管理器未配置或 token 过期。SourceTree 完全依赖系统级凭据存储(Windows Credential Manager / macOS Keychain),自己不存密码也不弹窗接管认证流程。
使用约定式提交(Conventional Commits)从 Git 历史记录中生成结构化变更日志,支持多种格式、AI 增强型描述以及可自定义的范围……
- GitHub/GitLab/Gitee 用户必须用 Personal Access Token(PAT)代替密码,且 token 至少含
repo权限(Gitee 需勾选“代码”权限) - 输错多次被锁?删掉系统凭据里对应域名记录(如
github.com),再在 SourceTree 中点一次Push,触发新弹窗重新填 token - HTTPS 协议下,
git remote set-url origin https://<token>@github.com/user/repo.git</token>是临时绕过方案,但不推荐长期使用
双击文件后代码被破坏,怎么避免
SourceTree 默认双击行为是「用系统默认程序打开」,对 package.json、.gitignore 这类文本文件极其危险——记事本或 TextEdit 可能改换行符(CRLF ↔ LF)或编码(ANSI ↔ UTF-8),导致 diff 异常、提交污染、CI 失败。
- 进 Tools → Options → General(macOS 是 Preferences → General),把 Double-click action 改成 Open in External Editor
- 指定编辑器路径:
code --wait(VS Code),确保已执行code --install-server(macOS)或 VS Code 已加入 PATH(Windows) - 顺手关掉 Auto-refresh,否则暂存修改后界面可能瞬间刷新,让你误以为没生效
Staged files 区域到底代表什么
它和命令行 git add 完全等价,不是预览区,也不是“准备推送”的缓冲区——一旦拖入或勾选,文件就已进入暂存区,git status 会立刻显示为 Changes to be committed。
- 误加文件?在 Staged files 列表中右键 → Revert Hunk 或 Discard(等同
git restore --staged) - 想部分暂存?右键文件 → Stage Selected Lines(等同
git add -p),适合修复单个 bug 而不提交其他改动 - 别指望它自动帮你过滤二进制文件或 .log ——
.gitattributes和core.autocrlf配置仍需手动设好,否则 Windows 下换行符问题照旧
最易被忽略的是:SourceTree 从不自动同步远程分支列表。点击 Fetch 只拉取元数据,不更新左侧「Remotes」下的分支名;必须手动右键远程分支 → Checkout 或 Create Branch,才会真正建立本地跟踪分支。这点和 git fetch --prune + git remote update 的组合行为不一致,容易让人误判远端状态。










