简介:面向 Windows 平台、希望以图形化方式掌握 Git 的初学者与日常开发者,TortoiseGit 使用教程以图文结合形式梳理这款右键菜单集成工具的核心用法,帮助不熟悉命令行的读者降低版本控制上手门槛。文档围绕安装后的基础配置、用户身份与凭证保存、SSH Key 准备、HTTPS 与 SSH 两种连接方式的差异,以及克隆、拉取、合并、提交、推送和分支管理等常见场景展开,并对文件状态角标的含义作了说明,便于读者理解仓库中各类标记。压缩包内共 1 个 docx 文件,约 1.15MB,单文档结构紧凑,适合通勤或碎片时间查阅。目前已有 2150 人学习,可作为 TortoiseGit 入门与日常协作的速查参考,也能帮助读者在图形界面与 Git 概念之间建立对应关系。
1. 装 TortoiseGit 之前,先把顺序搞对
上周帮一位刚转到 Windows 上做开发的同事收拾新机器,他把 TortoiseGit 装完,右键菜单里 Clone 和 Commit 全是灰的,点开 Settings 想把界面改成中文,Language 下拉里只有 English。后来才发现是两个问题叠在一起:TortoiseGit 的安装比 Git 早,它找不到git.exe;语言包下的版本又和主程序差了一个小版本号。Windows 上这套 Git + TortoiseGit + 中文语言包的三件套几乎是团队标配,一份靠谱的 TortoiseGit 使用教程不难写,难的是每一步都落在正确的顺序、版本和路径上。这份 Git 图文教程面向第一次在 Windows 上配图形界面 Git 的开发者,也照顾那些装过几次、但每次都要重新确认「git.exe 到底填 bin 还是 cmd」的熟手。整套流程在普通办公机上十几分钟能走完,装错了却可能要重装两遍才能恢复。
2. 安装顺序与版本对齐:Git 先装,小乌龟后装,语言包最后
这三样东西的依赖关系是单向的:TortoiseGit 是 Git 的图形外壳,它自己不带 Git 内核;中文语言包是 TortoiseGit 的附属 DLL,它必须挂在一个版本号完全一致的主程序上。顺序反了,TortoiseGit 装完会提示找不到可执行文件;语言包版本错了,界面会一半中文一半英文,甚至设置对话框打不开。所以安装顺序固定为「Git for Windows → TortoiseGit → 中文语言包」,中间不要插入任何重启以外的操作。
2.1 Git for Windows 的下载与安装选项
Git for Windows 从它的官方项目页下载,页面上标着最新稳定版的那个安装包就是,文件名形如Git-x.x.x-64-bit.exe。安装过程大部分是下一步,但有四个页面值得停下来看一眼,它们决定了后面 TortoiseGit 能不能顺利接管。
第一个是 PATH 环境变量页,三个选项里选中间那个「Git from the command line and also from 3rd-party software」。选第一个(只用 Git Bash)会导致在 CMD 和 PowerShell 里敲git提示找不到命令;选第三个会把一堆 Unix 工具塞进系统 PATH,容易和已有的命令打架。
第二个是换行符处理页。Windows 用 CRLF,仓库里一般存 LF。默认的「Checkout Windows-style, commit Unix-style」是绝大多数团队的选择,它会在检出时转成 CRLF、提交时转回 LF。如果团队里有 macOS 或 Linux 成员,且仓库里已经有.gitattributes明确规定了换行策略,那选哪个影响都不大;没有配置文件又选了「Checkout as-is」,第一次提交就会出现整文件 diff 的惨状。
第三个是 HTTPS 传输后端,OpenSSL 和 Windows 原生安全通道二选一。常见做法是保持默认的 OpenSSL,它和后面要配的凭证助手配合最稳;只有在公司网络强制走系统证书链时才换原生那个。
第四个是终端模拟器,选 MinTTY 就行,它跟 TortoiseGit 关系不大。
安装路径建议不要带空格和中文,D:\Program Files\Git这种带空格的路径本身能用,但个别老版本的 TortoiseGit 在调git.exe时对引号处理不严,会出现「找不到文件」的假报错。我一般装到D:\Dev\Git,省掉后面排查路径的功夫。
装完先验一下,开一个 CMD 窗口:
git --version where git第一行确认版本号能打印出来,第二行确认系统找到的git.exe只有一处。如果where git打出两行以上,说明机器上还残留着旧版 Git 或者某个 IDE 自带的 Git,这在后面配 TortoiseGit 的路径时会引起「明明配了却不生效」的玄学问题,建议先把多余的从 PATH 里摘掉。
2.2 TortoiseGit 安装向导里两个必须停一下的页面
TortoiseGit 的安装包同样从官方项目页取,注意它分 32 位和 64 位,现在基本都是 64 位。向导里绝大多数页面可以直接下一步,但有两处要停下来。
第一处是 SSH 客户端选择页,选项通常是「TortoisePlink」和「OpenSSH」。这个选择不是随便点的,它决定了你后面用 SSH 方式克隆时走哪套密钥。TortoisePlink 是 PuTTY 系的工具,只认.ppk格式的私钥;OpenSSH 认id_rsa这种标准格式。现在主流做法是用 OpenSSH,因为ssh-keygen生成的就是标准格式,和命令行、CI 环境完全通用。如果你选错了,后面用 SSH 克隆会稳定地报Disconnected: No supported authentication methods available,看起来像密钥没配好,其实是客户端不认这个格式。
第二处是安装向导最后一页的「Run first start wizard」勾选框。第一次装可以勾上,它会引导你走一遍语言和用户配置;但如果你打算按下一章的顺序手动配,这里取消掉更干净,避免它在你还没装语言包的时候就把语言锁成英文。
安装目录要与 Git 的目录区分开,别图省事装进 Git 目录里。TortoiseGit 会往资源管理器里注册 shell 扩展,装错目录卸载时容易留下残留在右键菜单里的死条目。
2.3 语言包版本号必须与主程序完全一致
中文语言包是最容易被轻视的一步。它的文件名里带三段版本号,比如主程序是 2.15.0,语言包就必须是 2.15.0,差一位都不行。版本不匹配时的表现很典型:设置对话框里部分文字变成问号、菜单项显示成空白、或者干脆点开 Settings 就闪退。
安装语言包时,安装程序会自动定位 TortoiseGit 的主目录,正常情况下直接下一步即可。如果它提示找不到安装位置,说明主程序装在了非默认路径,需要手动指到 TortoiseGit 的安装根目录(不是bin子目录)。
装完语言包不要急着开设置界面。先把已经打开的资源管理器窗口全部关掉,因为 shell 扩展是随资源管理器进程加载的,旧进程里还是老的 DLL。稳妥的做法是在任务管理器里重启「Windows 资源管理器」,或者在命令行执行:
taskkill /f /im explorer.exe && start explorer.exe这条命令强制结束并重新拉起资源管理器进程,让新的语言包 DLL 重新加载。执行时桌面会闪一下,属于正常现象。很多人装完语言包发现界面还是英文,就是因为旧进程没退,重启一次机器也能解决,但没必要。
3. 首次配置三项:语言、git.exe 路径、用户身份
装完之后,TortoiseGit 需要在某个目录下被「唤醒」一次才会读取配置。这一步的顺序也有讲究:先建一个专门放代码的根目录,在这个目录里打开设置,改完再进具体项目。这样全局配置和局部配置的边界从一开始就是清楚的。
3.1 建代码根目录,在正确的位置打开 Settings
先在磁盘上建一个专门存放所有 Git 项目的目录,比如E:\Git。这个目录本身不是仓库,只是用来归类。以后所有克隆下来的项目都放在它下面,找起来方便,也避免把仓库散落在桌面和下载文件夹里。
在这个目录的空白处右键,菜单里会有TortoiseGit子项,展开选Settings。注意右键的位置很关键:在文件夹空白处右键和在某个文件上右键,出来的菜单项不一样;在已经是 Git 仓库的目录里右键,Settings 里还会多出局部配置的入口。第一次配置建议就在这个「干净的根目录」里做,改的全是全局配置,不会误改某个项目。
打开设置窗口后,左侧是一列树形分类。真正需要动的只有General和Git两项,其余保持默认即可。有些教程会让你去改Icon Overlays和Network,那是排障时才需要的,初次安装不用碰。
3.2 General 页三件事:语言、git.exe 路径、升级检查
General页右侧最上面是 Language 下拉框,装了语言包之后这里会出现「中文(简体)」。选中它,界面不会立刻变,要点下面的 Apply 才生效。如果下拉框里只有 English,回到 2.3 检查语言包版本和资源管理器是否重启过,不要在这一页反复点。
同一页往下是 Git.exe Path 输入框,这是整个配置里最容易填错的一项。它要的是git.exe所在的目录,不是 Git 的安装根目录,也不是cmd目录。按第 2 章装到D:\Dev\Git的话,这里就填:
D:\Dev\Git\bin也可以在对话框里点 Browse 选过去。判断填对没有,看设置窗口底部那行版本信息,它会显示识别到的 Git 版本号;如果显示为空或者报错,就是路径指错了层。老版本 TortoiseGit 有的要求指到cmd目录,那是因为早期安装包里git.exe的布局不同;现在的版本统一指bin,指cmd反而会认到一个包装脚本。
再往下是升级检查的复选框,原文明确要求取消勾选。理由很实际:这个检查会在每次打开设置或某些操作时去连外网,公司内网环境下会卡住几秒甚至弹超时提示,而且它检查到新版本后只会弹窗,不会自动升级。取消掉,升级这件事改成手工做,心里有数。
三项改完点 Apply,再点 OK 关闭。注意 Apply 和 OK 有区别:Apply 保存但不关窗,OK 保存并关闭。语言项只有在 Apply 之后才会重新加载界面,所以顺序上建议先选语言、Apply,再去改路径。
3.3 Git 页的用户身份与全局、局部配置的区别
切到左侧的Git分类,右侧上半部分是 Name 和 Email 两个输入框。这不是登录账号,是写进每次提交记录里的作者标识,随便填会导致提交历史里的作者是一串乱码,后面想按人筛选提交记录就废了。填真实可辨识的名字和常用邮箱即可,格式上没有强制要求。
这两个框改了之后,等价于在命令行执行:
git config --global user.name "你的名字" git config --global user.email "you@example.com"如果嫌对话框填着麻烦,直接在 Git Bash 里敲这两行效果完全一样,TortoiseGit 读的是同一份配置文件。
这一页下半部分有两个按钮:「编辑全局 .git/config(O)」和「编辑本地 .git/config(L)」。前者任何时候都可点,后者只有在当前目录是一个 Git 仓库时才从灰色变可用。这个灰/亮的差别恰好说明了全局配置和局部配置的关系:全局配置存在用户主目录下的.gitconfig里,对所有仓库生效;局部配置存在项目目录下的.git/config里,只对这个项目生效,并且优先级高于全局。
原文提到「本地」这个翻译其实有点误导,叫「局部」更准确。实际使用中,局部配置最常见的用途是覆盖用户名——比如公司项目要用公司邮箱、开源项目要用个人邮箱,就在对应仓库里单独设一次。至于其他配置项,能用全局就别用局部,散落在各个.git/config里的设置过半年自己都想不起来。
4. 凭证与 SSH Key:HTTPS 记住密码和 SSH 免密两条路
克隆和推送时反复被要求输账号密码,是新手放弃命令行的头号原因。TortoiseGit 给了两条路:HTTPS 配凭证助手,把用户名密码存到本地文件;SSH 配密钥对,一次配置长期免密。两条路都能走通,区别在于安全边界和维护成本。
4.1 credential.helper = store 的配置和它的明文代价
在Git页点「编辑全局 .git/config(O)」,会用记事本打开全局配置文件。在文件末尾追加两行:
[credential] helper = store注意[credential]是段名,helper = store是这一段的键值,前面用 Tab 或空格缩进都行,但段名必须单独一行用方括号包住。加在文件最末尾最安全,不要插到已有的[user]段中间去,否则会被解析成 user 段的子项,配置直接失效。
保存关闭,回到设置窗口点确定。此后用 HTTPS URL 推送时输入一次用户名密码,TortoiseGit 就会记住。它的实现方式是把凭证写到用户主目录下的.git-credentials文件里,内容是明文的,形如:
https://username:password@your-git-host这就是store这个助手的全部逻辑——没有加密,没有系统密钥链。原文特意提醒「请小心保存」,这个提醒是认真的:任何人拿到这个文件就能以你的身份推送代码。个人开发机问题不大,公用机器、共享账号、临时借用的电脑上绝对不要开。
需要撤销的时候,把.git-credentials里对应的那行删掉,或者把helper = store改成helper =清空,也可以换成系统自带的凭证管理器。改完记得在 TortoiseGit 里重新触发一次认证,它不会主动去清已缓存的凭证。
局部配置里也能写同样的内容,只对单个项目生效,适合「大部分项目用 A 账号、个别项目用 B 账号」的情况。配置语法完全一样,只是写在项目目录的.git/config里。
4.2 用 ssh-keygen 生成密钥并填进服务器
SSH 方式的前置条件是本地有一对密钥,公钥填到服务器上。先看有没有现成的:打开用户主目录(C:\Users\你的用户名),看有没有.ssh文件夹,里面有没有id_rsa和id_rsa.pub。两个都在就直接跳到填公钥那步,不要重复生成覆盖掉,那会让已经在用的其他服务全部失效。
没有的话,用 Git Bash 生成比用图形界面稳:
ssh-keygen -t rsa -b 4096 -C "you@example.com"-t rsa指定密钥类型,-b 4096指定长度,-C后面是注释,通常写邮箱,方便在服务器端一堆公钥里认出这是谁的。执行后会问保存路径,直接回车用默认的~/.ssh/id_rsa;再问一次密码短语,个人机器上可以留空直接回车,留空就是完全免密,设了密码就是每次用密钥时再输一次这个短语——安全性更高,但离「一劳永逸」远了一步。两种都合理,看机器是不是自己独占。
生成完用下面的命令把公钥内容打出来:
cat ~/.ssh/id_rsa.pub输出是一整行,以ssh-rsa开头、以注释结尾,复制时必须整行复制,中间不能有换行。用记事本复制容易在末尾多带一个回车,粘到服务器上会提示格式错误,所以尽量在终端里选中复制。
私钥id_rsa不外传,公钥id_rsa.pub随便给。这个关系不能反,反了等于把家门钥匙贴在公司公告栏上。
填公钥的位置在服务器端的用户设置里,一般在「SSH 密钥」或「SSH Keys」这样的菜单下,点新增,把整行粘进去保存。自建的 Git 服务和托管平台都有这个入口,位置大同小异。填完立刻生效,不需要重启服务。
4.3 克隆:HTTPS 与 SSH 的 URL 写法差异
同一个仓库,两种协议给出的 URL 长得不一样:
| 方式 | URL 形态 | 认证 | 适用场景 |
|---|---|---|---|
| HTTPS | https://host/group/project.git | 账号密码或访问令牌 | 只读拉取、临时机器、公司网络限制 SSH 端口 |
| SSH | git@host:group/project.git | 密钥对 | 日常开发、需要频繁推送 |
HTTPS 的优点是什么都不用配,复制来就能克隆;缺点是每次 fetch 和 push 都要认证,除非开了 4.1 的凭证助手。SSH 的优点是配好之后长期免密,缺点是必须先有公钥在服务器上,而且只有项目成员才能加——公钥是绑在你账号上的,没有账号权限的人加不了。
在资源管理器空白处右键选Git 克隆,URL 填对应的地址,目录选到第 3 章建的根目录下面,点确定。克隆窗口会显示对象计数和接收进度。如果服务器端是个空仓库,一个文件都没有,克隆会报fatal: Couldn't find remote ref HEAD,这不是配置错,是仓库里确实没东西——先在服务器端建一个初始文件(比如 README)再克隆。
克隆完成后文件夹图标上会出现角标。如果什么角标都没有,先别怀疑克隆失败,去看第 5 章第一条。
5. 避坑排查:五条真踩过的记录
5.1 克隆成功了但文件夹上没有绿色角标
现象:仓库能正常提交、推送,但资源管理器里所有文件和文件夹都没有任何状态角标,看起来跟普通文件夹一样。
原因:Windows 对图标覆盖(icon overlay)的数量有硬限制,整个系统最多只认十几个覆盖标识,而且是按注册表里的加载顺序抢位的。装了网盘同步客户端、其他版本控制工具之后,它们会把自己的覆盖标识排在前面,TortoiseGit 的就被挤掉了,一个都显示不出来。
解决:打开 TortoiseGit 设置里的Icon Overlays页,确认「Status cache」不是 None;然后在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers下,把 TortoiseGit 相关的项改名,在前面加空格或数字让它们排到最前,重启资源管理器。最省事的办法是卸载掉不用的同步客户端,直接腾出位置。
5.2 右键菜单里 TortoiseGit 的项全是灰的
现象:右键能看到 TortoiseGit 子菜单,但 Clone、Commit、Push 全是灰色不可点。
原因:TortoiseGit 没找到可用的git.exe,或者找到的是个不完整的版本。常见于先装 TortoiseGit 后装 Git,或者 Git 装在带空格的路径下而 TortoiseGit 版本较老。
解决:进 Settings 的General页,把 Git.exe Path 改成 Git 安装目录下的bin,点 Apply 后看窗口底部有没有显示出 Git 版本号。没有就换cmd目录再试一次,两个都不行就用 Browse 直接选到git.exe文件本身看看文件名拼写。改完关闭所有资源管理器窗口重开。
5.3 用 SSH 克隆报 No supported authentication methods available
现象:HTTPS 能克隆,换成 SSH URL 后报Disconnected: No supported authentication methods available (server sent: publickey)。
原因:TortoiseGit 的 SSH 客户端设成了 TortoisePlink,而本地的密钥是ssh-keygen生成的标准 OpenSSH 格式,PuTTY 系工具只认.ppk。也可能是公钥根本没填到服务器上,或者填的时候末尾多了换行导致整行失效。
解决:进 Settings 的Network页,把 SSH client 从 TortoisePlink 改成ssh.exe的完整路径(Git 安装目录下usr\bin\ssh.exe)。改完再试,如果还报同样的错,用ssh -T git@your-git-host单独测一次,这条命令会明确告诉你是认证被拒还是网络不通。
5.4 配了 helper = store,推送还是要输密码
现象:全局配置里明明加了[credential] helper = store,第一次推送输了密码,第二次照样弹框。
原因:三种可能。一是配置写错了位置,比如插进了别的段中间,git config --global --get credential.helper查出来是空的;二是 URL 里本身带了用户名,形如https://user@host/...,这种情况下凭证助手的行为会异常;三是机器上同时装了别的 Git(比如某个 IDE 自带的),实际执行推送的是另一个git.exe,读的是另一份配置。
解决:先用git config --global --get credential.helper确认读出的是store,读不出就重新用命令行写一遍。再检查克隆时用的 URL 有没有带用户名。最后用where git确认系统里只有一个git.exe。
5.5 拉取时提示冲突,不知道从哪下手
现象:点「拉取」之后弹出冲突提示,仓库里多出一堆带问号或感叹号角标的文件。
原因:本地改动的文件和服务器上新提交的改动落在同一片区域,Git 无法自动合并。多人协作时不先拉取就直接改代码,是造成这种情况最常见的原因。
解决:TortoiseGit 会弹出冲突解决窗口,逐个文件选「使用我的」「使用他们的」或者手工编辑合并结果,处理完标记为已解决,再提交一次。养成习惯比事后补救重要:每次动手改代码之前先拉一次,改完提交前再拉一次,冲突的概率会低很多。
6. 装完怎么验证:从克隆走到推送的闭环
配置完不等于配好了,得跑一遍完整链路才算数。我习惯用一个小仓库做验证,从零走一遍克隆、改动、提交、拉取、推送,五步都能过,这套环境才算真的可用。
第一步,在空的根目录右键克隆一个测试仓库,用你日常会用的那种 URL(HTTPS 或 SSH)。克隆完成后进目录,随便改一个已有文件的内容,保存。
第二步,退回上一级目录再进来,看角标变化。这时候文件应该是红色感叹号,表示已修改未提交;新建一个Hello.txt,它应该是蓝色加号。角标能正确反映状态,说明 5.1 那条坑你没踩。
| 角标 | 含义 |
|---|---|
| 绿色对号 | 文件与版本库一致,无改动 |
| 红色感叹号 | 已修改,未提交 |
| 蓝色加号 | 新添加,未纳入版本控制 |
| 蓝色问号 | 未受控文件 |
| 灰色减号 | 已被忽略 |
| 红色叉号 | 已删除 |
| 黄色感叹号 | 存在冲突 |
第三步,右键选Git 提交 -> "master",填提交说明,勾上要提交的文件,点提交。提交只写本地仓库,这一步不涉及网络,失败的话基本是用户身份没配(第 3.3 节)。
第四步,右键选Git 同步,在同步窗口里先点「拉取」。拉取正常说明认证通了、网络通了。如果这里弹冲突,说明你改的文件在服务器上也被改过,按 5.5 处理。
第五步,点「推送」。SSH 方式应该直接成功不弹框;HTTPS 方式第一次会要账号密码,输完再推一次确认它记住了。推完去服务器网页上看一眼提交记录,能看到你刚才那条说明,作者名和邮箱显示正确,全链路就闭环了。
这套验证我固定会做,因为有三类问题只在推送时暴露:SSH 客户端选错、凭证助手作用域不对、账号没有写权限。前两类在前面的配置章节都能提前规避,第三类只能靠实际推一次才知道——有时候克隆权限和推送权限是分开配的,能拉不能推,报错信息还相当含糊。
从那以后我每次装完这套环境,都强制自己走一遍这五步,哪怕机器是临时用的、只打算拉个代码看一眼。宁可多花三分钟,也不想在赶着发版的时候才发现推送没权限。希望帮到你。
本文还有配套的精品资源,点击获取