2026/10/30 11:40:15

TortoiseGit使用教程:Windows右键菜单配置Git与SSH Key凭证管理

TortoiseGit使用教程:Windows右键菜单配置Git与SSH Key凭证管理 简介围绕 Windows 平台 Git 图形化操作编写的 TortoiseGit 图文教程面向刚接触版本控制、希望降低命令行使用门槛的开发者与运维学习者帮助其熟悉仓库克隆、提交推送和分支协作等基础流程。压缩包内仅有 1 个 docx 文档大小约 1.15MB内容按安装配置、凭证管理、使用示例和常用操作组织便于按主题检索查阅。教程具体涵盖 Git、TortoiseGit 及中文语言包的安装常规选项、用户名与邮箱设置凭证助手和 SSH Key 的配置并通过克隆项目对比 HTTPS 与 SSH 两种连接方式。常用操作部分还梳理 Fetch、Merge、Commit、Push、分支管理以及文件状态角标含义可帮助读者理解右键菜单背后的 Git 行为积累日常排错与协作思路。目前已有 2150 人学习适合作为 Windows 环境下 TortoiseGit 入门和随手查阅的紧凑型文档也可供日常开发时快速定位配置与操作要点。1. 右键菜单里的 GitTortoiseGit 解决的是哪一层麻烦命令行里敲git status、git commit -m敲得挺顺的人一换到 Windows 资源管理器就容易抓瞎改完文件不知道哪些进了暂存区蓝色加号、红色感叹号到底代表什么谁也说不清。TortoiseGit俗称小乌龟把 Git 的常用操作挂到右键菜单上配合资源管理器图标角标改了什么、走到哪一步眼睛能直接看见。这份 TortoiseGit 使用教程的定位很实在从装 Git、装小乌龟、配中文语言包开始到克隆、提交、拉取、推送完整跑一遍重点压在 SSH Key 和凭证管理这两块最容易卡住的地方。适合刚接手 Windows 开发机、团队用 Git 但自己还没跑通完整往返的从业者也适合带新人时照着配环境的老手当作一份 Git 图文教程对着点鼠标。2. 装 Git、装小乌龟、装语言包三步顺序错了就白折腾2.1 依赖链TortoiseGit 只是壳git.exe 才是干活的那个很多人以为装完 TortoiseGit 就能用了结果右键菜单点“克隆”弹一个Unable to find git.exe或者git.exe not found一脸茫然。原因是 TortoiseGit 本身不实现任何版本控制逻辑它是个纯前端所有操作最后都要拼成命令行去调 Git for Windows 里的git.exe。壳装了、内核没装或者内核装了但路径没对上菜单能点活干不了。所以顺序是死的先装 Git for Windows装完在任意目录右键能看到Git Bash Here、Git GUI Here说明内核就位再装 TortoiseGit 主程序最后装中文语言包。语言包是独立的 msi必须在主程序之后装顺序反了安装器会提示找不到 TortoiseGit因为它要往主程序目录里写语言 dll。安装路径上有个细节值得提前说路径里不要带中文和空格之外的怪字符尤其不要把 Git 装到同步盘目录OneDrive、坚果云这类下面。同步盘会实时扫描文件变更.git目录动辄几万个小文件扫描线程和 Git 的文件锁撞上轻则操作卡顿重则出现index.lock残留之后每次操作都报 “Another git process seems to be running”。我一般把 Git 和 TortoiseGit 都放默认路径项目目录单独放一个非同步盘的盘符。装完先用命令行确认一遍别急着点右键# 确认 git 在 PATH 里且版本号能正常输出 git --version # 确认实际调用的是哪个 git.exe多版本共存时这条能查出问题 where gitgit --version输出版本号说明 PATH 配置没问题where git会列出所有命中的路径如果第一行不是你刚装的那个说明机器上还有旧版本比如随某个 IDE 装的便携版抢在前面。这时候要么调整 PATH 顺序要么在 TortoiseGit 设置里手动指定路径后者更省事。提示Git for Windows 安装向导里有一个 “Adjusting your PATH environment” 选项保持默认的 “Git from the command line and also from 3rd-party software” 即可选最下面那个 “Use Git and optional Unix tools from the Command Prompt” 会把find、sort这类 Unix 工具塞进 PATH容易和 Windows 自带命令打架。2.2 全局设置里三个必改项语言、升级检查、git.exe 路径在准备存放项目的目录里比如E:\Git空白处右键选TortoiseGit → Settings左边是一棵配置树右边跟着切换。第一次进来建议按顺序处理三件事。第一件是语言。选中General右侧Language下拉里挑“简体中文”。如果下拉里根本没有中文选项说明语言包没装上或者装到了别的目录回去重装语言包别在这儿死磕。语言切换后部分对话框要重新打开才生效。第二件是升级检查。同一个General页面把自动检查更新的勾去掉。内网开发机、隔离环境的机器上这个检查会每次启动尝试联网超时之后弹一个毫无意义的提示框纯粹浪费注意力。关掉它不影响任何功能。第三件是 git.exe 路径。还是在General页有个 Git.exe Path 的输入框。新版 Git for Windows 默认装在C:\Program Files\Gitgit.exe在cmd\和bin\下各有一份路径说明建议C:\Program Files\Git\cmd\git.exe官方推荐的入口包装了环境变量初始化首选C:\Program Files\Git\bin\git.exe裸可执行文件可用但部分子命令依赖的环境变量要自己配C:\Program Files\Git\mingw64\bin\git.exe内部实现层不建议直指如果安装时改过盘符老教程里常见的D:\Program Files\Git\bin这里就要跟着改。填完点“应用”→“确定”然后随便找个仓库右键看菜单里的操作是否还报错。2.3 用户名邮箱与凭证助手密码交给谁保管这是个安全决策切到左边树的Git标签右侧上半部分是Name和Email两个输入框。这两个值会写进全局配置的[user]段之后每一次提交都会把这两个信息烙进 commit 对象里是永久性的——改配置只影响之后的提交历史记录改不了。所以名字建议用真名或团队约定的工号形式邮箱用公司邮箱别用个人邮箱随手填后面查 blame 的时候会感谢自己。下半部分有两个按钮值得解释因为翻译容易误导“编辑全局 .git/config(O)” —— 改的是C:\Users\用户名\.git\config对本机所有仓库生效。“编辑本地 .git/config(L)” —— 改的是当前仓库下的.git\config只对这个项目生效。在没有打开任何仓库的情况下这个按钮是灰色不可点的不是坏了。老教程里流行往里加一段[credential] helper store作用是把 HTTPS 方式推送时输入的用户名密码存下来下次不再问。方便是真方便代价是密码以明文形式落在C:\Users\用户名\.git-credentials里一行一个站点格式是https://user:passwordhost。任何能读这个文件的进程都能拿到你的仓库密码。公用机器、共享账号、公司配发但多人用过的机器上这条绝对不要开。更稳妥的做法是用系统凭证管理器Git Credential Manager凭据加密存在 Windows 凭据库中TortoiseGit 新版本默认就走这条路。如果确实要用 store至少把文件权限收紧到只有自己能读# 收紧 .git-credentials 的访问权限只保留当前用户 icacls $env:USERPROFILE\.git-credentials /inheritance:r /grant:r $env:USERNAME:(R,W)命令行等价写法方便在脚本里批量配置# 全局身份写进 ~/.git/config 的 [user] 段 git config --global user.name 张三 git config --global user.email zhangsanexample.com # 让 Git 记住 HTTPS 凭据明文存储评估后再用 git config --global credential.helper store # 确认配置落地 git config --global --listgit config --global --list会把全局配置按keyvalue全列出来检查user.name、user.email、credential.helper三项是否都在。如果只想看某一项用git config --global user.name单独取值。改错了要删用git config --global --unset credential.helper比手动去编辑文件可靠。3. SSH Key 从生成到落到服务器一次配置省掉无数次输密码3.1 HTTPS 与 SSH 的取舍不是谁更高级是场景不同本地仓库和远程仓库之间就两条通道选哪条跟技术水平没关系跟网络环境和使用频率有关系。HTTPS 走 443 端口任何能上网的地方基本都通公司防火墙、酒店网络、客户现场很少拦 443。代价是每次 fetch/push 都要过一次身份验证配了凭证助手才能免输。另外部分托管平台对 HTTPS 推送要求用访问令牌token代替密码第一次遇到会懵明明密码没错就是 403。SSH 走 22 端口一次配好密钥对之后所有操作静默通过。代价是 22 端口在不少企业网络里是被封的连不上就是连不上而且公钥必须挂在你自己的账号下换句话说你对目标仓库得有权限克隆别人的公开仓库倒是不受这个限制但推送必须是你自己的。维度HTTPSSSH端口443穿透性好22部分网络封禁首次配置零配置需生成密钥对并上传公钥日常操作需凭证助手否则重复输入免密换机器无感要重新生成或迁移私钥适合场景临时克隆、只读拉取、受限网络长期开发、频繁推送团队里常见的做法是日常开发机配 SSH一次性看代码、临时拉个仓库用 HTTPS。两条通道可以共存同一个仓库的 remote 地址随时能换。3.2 用 Git GUI 生成密钥对别去网上复制粘贴命令先查有没有现成的。打开C:\Users\用户名\.ssh目录看里面有没有id_rsa和id_rsa.pub这一对。有就直接跳到下一节别重复生成——重复生成会覆盖旧私钥而旧公钥可能已经挂在好几个服务器上了覆盖之后那些仓库全部连不上这是血泪经验。没有的话在任意文件夹空白处右键选Git GUI Here弹出的窗口菜单栏Help → Show SSH Key。如果列表是空的点Generate Key拖动窗口里的进度条制造随机数不是玄学是给密钥生成器采集熵生成完把文本框里的全部内容复制出来。这个文本框里的就是公钥。命令行方式等价而且参数可控性更好# -t 指定算法-b 指定长度-C 是注释用来在服务器端区分是哪台机器 ssh-keygen -t rsa -b 4096 -C work-pc-2024 # 一路回车默认存到 ~/.ssh/id_rsa密码短语可以留空 ls -l ~/.ssh参数逐个说-t rsa是算法类型兼容性最好几乎所有服务端都认-b 4096是密钥长度2048 现在偏短4096 生成慢一点但一劳永逸-C后面的注释不参与加密纯粹是给人看的强烈建议写上“机器名年份”将来在服务器上看到一堆公钥时能分辨哪个该删。生成过程会问你要不要设 passphrase设了更安全但每次用都要输日常开发机一般不设笔记本外带的话建议设。生成完目录里是两样东西id_rsa是私钥绝对不能外发、不能进版本库、不能放共享盘id_rsa.pub是公钥可以随便给。顺手确认一下.ssh目录没有被同步盘接管私钥泄出去等于把仓库钥匙给了别人。3.3 公钥上传之后还有一道 SSH client 的坎把id_rsa.pub的内容整段复制从ssh-rsa开头到注释结尾必须是一行中间不能有换行登录代码托管平台找到 SSH Keys 设置页新建一个粘贴进去保存。自建 Git 服务Gitblit、GitLab 社区版这类的入口通常在用户中心或头像菜单下的 SSH Keys。上传完先别急着克隆先在命令行验证连通性# -v 输出握手细节首次连接会问是否接受主机指纹输 yes ssh -vT gityour-git-host.example.com期望看到的是类似Hi 用户名! Youve successfully authenticated的欢迎语。如果报Permission denied (publickey)按这个顺序查公钥有没有粘全末尾少几个字符也会失败、粘的是不是.pub文件的内容、服务端账号是不是你当前登录的这个、-i指定的私钥路径对不对。真正容易翻车的地方在 TortoiseGit 这一侧。它默认使用的 SSH 客户端不是 OpenSSH而是自带的TortoisePlink只认 PuTTY 格式的.ppk私钥。你用ssh-keygen生成的是 OpenSSH 格式的id_rsa直接点克隆会得到一句No supported authentication methods available或者disconnected: no supported authentication methods available (server sent: publickey)。第一次遇到会以为是公钥没配好反复重传其实公钥一点问题没有。两条路解决。要么把id_rsa转成.ppk用 PuTTYgen 导入再另存要么把 TortoiseGit 的 SSH 客户端换成 OpenSSH——后者更省事我一般这么做Settings → Network把SSH client那一栏改成C:\Program Files\Git\usr\bin\ssh.exe。改完确定重新克隆即可。这一步在各类教程里经常被跳过导致读者卡在“公钥明明传了为什么还连不上”。4. 克隆、提交、拉取、推送一个本地项目跑通完整往返4.1 克隆URL 填对空仓库那个报错别慌在准备放项目的目录空白处右键选Git 克隆 / Clone弹出对话框三样东西要填URL、目标目录、分支。URL 从仓库页面复制注意区分 HTTPS 和 SSH 两种形式别把 SSH 地址粘到只支持 HTTPS 的代理配置里。URL 粘错、公钥没配、目录非空是这个对话框最常见的三种失败。目录非空时 TortoiseGit 会拒绝克隆因为目标目录里已有的文件可能被覆盖。做法是先建一个空子目录克隆到子目录里。还有一种情况仓库在服务端刚创建一个提交都没有。克隆时会报fatal: Couldnt find remote ref HEAD这不是你配错了。Git 的 HEAD 指向一个分支引用空仓库里连分支都不存在HEAD 自然解析不出东西。解决办法是先在服务端做一次初始化提交网页端加个 README或者本地先git init、提交一次、再推上去。老教程里没提这个坑很多人在自建服务上建完空仓库就卡在这儿。克隆成功的标志是文件夹图标右下角出现绿色对号。如果没有角标但文件都在看第 5 章第 1 条。命令行验证克隆结果的等价操作# 查看 remote 地址是否正确指向目标仓库 git remote -v # 查看当前分支与最近三次提交 git log --oneline -3 # 查看工作区状态克隆完应该是 clean git statusgit remote -v会输出 fetch 和 push 两条地址正常情况下一致。如果克隆后用 HTTPS、后来想换 SSH不用重新克隆git remote set-url origin 新地址一条命令换掉即可历史记录和本地分支都保留。4.2 提交这是纯本地操作不会联网改完文件在项目目录空白处右键Git 提交(C) - master分支名会跟着当前分支变。提交对话框分三块左上角是改动文件列表勾选哪些就提交哪些下方是提交信息输入框中间还有变更预览双击文件能看逐行差异。这里有个习惯值得养成提交前先双击看一遍 diff。图形界面的便利之处就在这不用记git diff的输出格式红色删除、绿色新增一目了然。见过太多人一次勾三四十个文件、写一句“修改”半年后出问题往回查日志里全是黑匣子。提交信息写什么团队规范不一但最低要求是“说清这次改了什么、为什么改”。一句话能说清就别写两句说不清说明这次提交塞了太多不相关的东西该拆。再强调一遍提交Commit只写本地仓库不联网、不碰服务器。很多人点完提交就以为代码已经上去了关了电脑回家第二天同事拉不到这是最常见的新手误解。真正上传是下一步的推送。# 提交后确认本地领先远程几个提交 git status # 看最近提交的哈希和说明 git log --oneline -5 # 看本地分支与远程分支的领先/落后关系 git branch -vvgit branch -vv的输出里[origin/master: ahead 2]表示本地比远程多两个提交还没推。ahead和behind两个数字是判断“该拉还是该推”最直接的依据。4.3 拉取再推送顺序反了整个流程就得重来提交完点推送如果远程有你没拉过的提交会被拒绝报non-fast-forward。避免的方法很朴素推之前先拉。在项目目录右键 →Git 同步弹出同步窗口。这个窗口把拉取、推送、日志三件事放在一个界面比来回点右键菜单高效。点“拉取(P)”把远程分支的更新取回本地并合并。结果只有两种。远程没变化提示“已经是最新的”直接点“推送(H)”远程有变化且没冲突Git 自动合并本地多出一条合并记录或者快进然后推送远程有变化且同一文件的同一区域被改过冲突文件上出现黄色感叹号内容里插入、、三段标记。冲突不是故障是 Git 把决策权交回给人。做法是打开文件把三段标记连同不要的内容一起删掉保留最终想要的版本保存右键该文件选解决冲突 → 标记为已解决然后提交、推送。别直接删标记就完事删之前想清楚这段逻辑到底该保留谁的。# 拉取时用 rebase 代替默认 merge历史更线性 git pull --rebase origin master # 冲突解决后继续 rebase git rebase --continue # 中途想放弃回到拉取前的状态 git rebase --abort--rebase和默认合并的区别默认合并会产生一个“Merge branch master of ...”的合并提交多人频繁拉取时历史会变成一团乱麻--rebase把你本地的提交“摘下来”接到远程最新提交之后历史是一条直线。团队没有强制要求时我一般用 rebase看日志干净。但注意 rebase 会改写提交哈希已经推到远程的分支不要 rebase会坑到别人。推送时如果弹出用户名密码框说明当前用的是 HTTPS 通道且没配凭证助手填一次即可配了 store 或凭证管理器就不会再问。第一次连新服务器还会问是否接受主机密钥指纹选是指纹会写进known_hosts之后不再问。4.4 角标与分支把七种图标当成状态指示灯资源管理器的图标角标是 TortoiseGit 最有价值的部分它把仓库状态压缩成一个视觉信号。七种常见状态角标含义说明绿色对号正常无改动工作区文件与 HEAD 一致红色感叹号已修改文件内容变了尚未暂存/提交蓝色加号新添加已纳入版本控制等待提交蓝色问号未受控新文件Git 完全不知道它存在灰色减号已忽略命中 .gitignore 规则红色叉号已删除文件被删删除动作待提交黄色感叹号冲突合并/拉取产生冲突需人工处理蓝色问号和蓝色加号最容易混问号是“Git 不知道这个文件”得先“添加”加号是“已经加入暂存区等着提交”。很多人改了新文件直接点提交发现列表里没有就是因为没先添加。分支操作在右键菜单TortoiseGit → 切换/检出、创建分支、合并里。日常节奏是主分支保持可发布状态功能开发开新分支做完合并回去。切换分支前先确认工作区干净没有红色感叹号和黄色感叹号否则切换会被拒绝或者把改动带过去后者更麻烦。# 列出本地分支及跟踪关系 git branch -vv # 新建并切换到功能分支 git checkout -b feature/login # 合并回主分支先切回 master git checkout master git merge --no-ff feature/login--no-ff强制产生一个合并提交好处是分支历史可追溯能一眼看出“这一坨改动是一个功能”代价是日志多一层。小团队、提交频繁的场景用不用都行关键是团队统一。5. 避坑与排查图标消失、冲突收尾、认证反复失败5.1 现象所有角标变回普通文件夹图标现象右键菜单一切正常能提交能推送但资源管理器里所有文件都是普通图标没有任何绿色对号或红色感叹号。原因Windows 资源管理器对图标覆盖Overlay Icon有硬性限制整机最多注册 15 个覆盖标识按注册表里的字母顺序取前 15 个。装了几个网盘客户端、压缩软件、同步工具之后TortoiseGit 的标识被挤到 15 名开外系统直接不显示。另一种情况是安装时没勾选“Icon Overlays”组件。解决打开注册表编辑器定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers看TortoiseGit开头的项排在第几位。在项名前面加空格加一个空格就前移一位把它顶到前 15 名内然后重启资源管理器进程# 重启资源管理器让图标缓存刷新 Stop-Process -Name explorer -Force64 位系统上这个注册表路径还有Wow6432Node分支两处都要检查。如果项根本不存在说明安装时组件没选重新运行安装包修复。5.2 现象拉取后文件全是冲突标记不知道从哪下手现象同步窗口点拉取提示有冲突文件图标变黄色感叹号打开文件看到 HEAD、、三段内容交织。原因你改的文件和远程别人改的文件落在同一区域。Git 无法判断该保留谁于是把两版都塞进文件里等你裁决。这跟操作失误无关是正常的协作结果。解决别慌也别用“强制拉取覆盖本地”这种操作——那会直接丢掉你未提交的改动。逐个文件打开按业务逻辑决定保留哪段删掉三段标记。改完保存右键文件TortoiseGit → 解决冲突 → 标记为已解决全部处理完再提交、再推送。冲突文件多的时候用TortoiseGit → 编辑冲突打开三方合并工具左边本地、右边远程、中间结果比手改文本高效得多。5.3 现象密码明明改对了推送还是 403 或者一直弹框现象在托管平台改了账号密码本地推送反复失败或者每次操作都弹认证框填了也不记住。原因两条线索。用 HTTPS credential.helperstore的旧密码已经明文存在C:\Users\用户名\.git-credentials里Git 每次都拿旧密码去认证服务端自然拒绝。用 SSH 的TortoiseGit 的 SSH client 指向TortoisePlink不认 OpenSSH 格式的id_rsa表现是一连串认证失败。解决HTTPS 的打开.git-credentials删掉对应站点那一行或者整文件清空后重新推一次让它重写。Windows 凭据管理器里也存了一份在“控制面板 → 凭据管理器 → Windows 凭据”里找到对应条目删除。SSH 的去Settings → Network把 SSH client 改成C:\Program Files\Git\usr\bin\ssh.exe再试。5.4 现象推送被拒提示 non-fast-forward现象点推送弹窗报rejected、non-fast-forward或者中文的“推送被拒绝需要先拉取”。原因远程分支上有你本地没有的提交。Git 拒绝推送是为了防止你用旧历史覆盖别人的新提交这是保护机制不是故障。解决先拉取有冲突按 5.2 处理没冲突直接推。绝对不要在共享分支上用强制推送--force绕过这个检查那等于把同事的提交从历史上抹掉找回来非常麻烦。只有自己独占的特性分支、且确定要重写历史时才考虑--force-with-lease它会先检查远程有没有别人的新提交比裸--force安全一档。5.5 现象只改了一个字符整个文件显示全改中文名显示成八进制现象diff 里一行没动的地方也标红或者文件名显示成\346\226\207\346\241\243.txt这种转义串。原因换行符问题。Windows 用 CRLFLinux/macOS 用 LF两边没统一时 Git 会把整文件视为逐行变更。中文名乱码是core.quotepath默认开启Git 把非 ASCII 字符转义输出了。解决# Windows 开发机提交时转 LF检出时转 CRLF git config --global core.autocrlf true # 让 Git 直接输出中文文件名 git config --global core.quotepath falsecore.autocrlf三个取值要分清true给 Windowsinput给 Linux/macOSfalse表示不做任何转换。团队里如果有人设false有人设true同一个文件会在两人之间来回“全文件修改”这是最典型的配置不一致事故。项目根目录放一个.gitattributes文件写死规则比靠每个人自觉可靠。6. 把右键菜单用成流水线提交前那五步自检配置调通只是起点真正决定这套工具好不好用的是日常节奏。我现在的习惯是把操作压缩成固定五步每步对应右键菜单里的一个入口走完一遍不超过两分钟但能挡掉八成的返工。顺序动作检查点失败时的处理1先拉取同步窗口提示“已是最新”有冲突先解决再往下2看改动勾选列表里有没有不想提交的文件用 .gitignore 排除3看 diff逐行确认没有调试代码、临时密钥撤回后重改4写提交信息一句话说清改了什么、为什么拆成多次提交5推送后回看服务端页面上能看到这条提交查分支是否推错第 3 步最容易被跳过也最容易出事。图形界面的 diff 面板比命令行友好得多双击文件就能看逐行对比红色删除绿色新增扫一眼就知道有没有把本地调试用的console.log、测试账号密码、绝对路径带上去。这种事出一次就够记一辈子。再补一个进阶用法TortoiseGit → 显示日志打开日志窗口选中任意一次提交右键能对单个文件做“追溯blame”逐行看这行代码是哪次提交、谁改的、当时写了什么说明。排查“这行诡异的判断是谁加的”这类问题时比翻聊天记录快得多。日志窗口还能选两个提交做对比输出完整差异做发布前的变更评审很顺手。最后说个我自己的教训。早年带一个项目图省事在全局配置里开了credential.helperstore机器是团队共用的测试机谁都能登。某天发现仓库里多了几个不属于任何人的提交查了半天才反应过来是.git-credentials里的明文密码被读走了。从那以后我每台机器配完环境第一件事是确认凭证助手的类型共用机器一律改成系统凭据管理器个人机器才考虑 store而且配完立刻用icacls收权限。这份 TortoiseGit 使用教程里的配置章节我反复看了几遍就是因为它把“记住密码”当成一个便利功能在讲而实际用起来它同时是个安全决策——便利和安全从来都是一枚硬币的两面选之前得知道自己放弃的是什么。希望帮到你。本文还有配套的精品资源点击获取