ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Windows 安装 Git 与 SSH 密钥配置指南:详解环境变量与免密推送

2026/9/14 23:41:01 拓冰建站 浏览量
Windows 安装 Git 与 SSH 密钥配置指南:详解环境变量与免密推送 在 Windows 上装 Git、配 SSH、打通环境变量这套动作我帮同事做过不下三十次。每次看到有人卡在“Git 明明装了一打开终端却说不认识这个命令”或者“下载代码要输密码、每次 push 都被拒”的时候我都很想说这不是你不会用而是安装时有好几个坑没绕过去。这篇文章就把 Windows 上 Git 下载、安装、环境配置、SSH 密钥这条完整链路一次讲透照着做基本能一步到位适合刚从 macOS 切到 Windows 的开发者、刚入行还搞不清命令行的新手以及那些“装了很多回 Git 还是哪里不对”的老手。1. 装 Git 之前先把三个常被混淆的概念分开1.1 “装 Git”不等于装了 git.exe很多人在 Windows 上第一次装 Git以为下一步下一步点完就万事大吉。实际上 Git for Windows 是一个比较大的工具包它不止包含git.exe还自带了一个模拟 Unix 命令行的Git Bash、一套替换 Windows 命令行的终端程序以及一堆辅助工具和配置文件。这个工具包默认安装目录是C:\Program Files\Git。你能直接运行的git.exe在里面的cmd文件夹和bin文件夹各有一份但这两个文件的作用不完全一样。cmd\git.exe是给命令行直接调用的主程序bin\git.exe则会被 Git 自己的内部脚本调用。如果手动配 PATH我建议只把cmd目录加进去这也是官方安装包推荐的做法。1.2 环境配置到底配的是什么很多人把“环境配置”理解成“装完 Git 之后打开终端就完事”其实“环境配置”这个词至少包含三层PATH 环境变量让系统在任意目录都能找到git命令。全局用户信息user.name和user.email每次 commit 时记录作者身份。SSH 密钥让你不用每次 push 都输密码或令牌也是连接 GitHub、Gitee、GitLab 的主要认证方式。三样东西缺一个都会出现我前面说的“一团乱麻”的状态。所以这篇文章不是只讲安装而是把“装完 Git 之后环境到底要配到哪个程度才算数”这件事讲清楚。1.3 2026 年的终端生态已经和几年前不一样了到了 2026 年Windows 11 早已成为主流系统默认终端是 Windows TerminalPowerShell 也升级到了 7.x。Git 安装包本身也一直在变默认的 Git Bash 体验和十年前相比好很多但它已经不是唯一选择。你在 PowerShell、CMD、VS Code 集成终端、Windows Terminal 里都能跑 Git前提是 PATH 配置正确。而 VS Code 这类图形化编辑器默认会去 PATH 里找 git找到之后就能显示源代码管理图标、做 diff、推送等操作。如果 PATH 没配好VS Code 里会一直提示“Git 未安装”或者“找不到仓库”这才是很多人误以为“VS Code 坏了”的真实原因。2. 下载安装全流程从官网选包到每一屏该点哪个选项2.1 下载渠道别再在第三方程式站上碰运气Git 的官网下载页是https://git-scm.com/download/win。这个页面会根据你的系统自动推荐 64 位版本基本上点进去就能看到64-bit Git for Windows Setup和32-bit Git for Windows Setup直接下载 64 位。我不建议从搜索引擎结果页里那些“高速下载器”下载。一方面是因为很多下载站会捆绑其他软件另一方面是它们提供的可能是旧版本。Git 这种官方安装包本身只有几十 MB官网直连下载通常没问题如果你所在网络环境下官网很慢也可以去几个国内高校开源软件镜像站找文件名一般叫Git-x.x.x-64-bit.exe下载完对比一下官方给的 SHA-256 校验值更稳妥。到 2026 年Git 官方稳定版已经走到 2.5x 这个版本段。安装时版本号不用刻意追新但也不能太旧。太旧的版本在 Windows 11 上可能出现终端字体渲染异常、与新版 GPU 加速终端不兼容等问题。我自己的习惯是只要官方出了新的 2.x 稳定版本过一到两周没有大面积负面反馈就升级。2.2 安装过程各屏怎么选Git 的安装界面是全英文的英文不好的朋友很容易在这里乱点。我把每个关键页面拆开讲一遍每个选项都给你一个明确答案。安装界面建议选择理由Install Components安装组件保持默认全选组件里包含 Git Bash、Git GUI、Git LFS 等以后都可能会用到Select Start Menu Folder默认即可就是开始菜单快捷方式无所谓Choosing the default editor选择你熟悉的编辑器比如 VS Code主要影响git commit弹编辑器时用什么新手建议直接用 VS CodeAdjusting your PATH environment第二项Git from the command line and also from 3rd-party software这个选项会把 Git 加入 PATHVS Code 才能找到 GitChoosing HTTPS transport backend使用默认的 OpenSSL 库如果你平时用公司自签 HTTPS 证书连 Git 仓库会有特殊场景但普通用户默认即可Line ending conversionsCheckout Windows-style, commit Unix-style line endings默认避免 Windows 上的仓库出现换行符混乱Configuring the terminal emulator默认的Use MinTTYMinTTY 对 Unix 命令更友好颜色渲染也比传统 Windows 控制台好Extra configuration options默认全选即可这几项主要是文件缓存和符号链接支持默认配置最省心这里要特别说下 “Adjusting your PATH” 这一屏。第一次装 Git 的人很容易手滑选第一项Use Git from Git Bash only装完以后在 CMD 和 PowerShell 里输入git都提示“不是内部或外部命令”。这个选项的意思是“只让 Git Bash 里能用 Git”它不会把 git 命令暴露给整个系统。如果你之前已经装过 Git但当时选错了这一项也没关系不需要卸载重装后面第 3 节会讲怎么手动补 PATH。2.3 安装完先做两件事不是直接去 clone装完 Git 后第一件事是打开新的 PowerShell 或 Windows Terminal执行git --version如果输出类似git version 2.48.1.windows.1说明安装成功并且 PATH 生效了。注意一定要新开终端窗口否则系统读取的还是旧的 PATH。接下来马上设置全局用户信息。这两个信息会写进你每一次提交的元数据里不设置的话 Git 会拒绝 commit 或使用一个默认的奇怪签名git config --global user.name 你的名字 git config --global user.email 你的邮箱设置完可以检查一下git config --global --list看到user.name和user.email都在列表里Git 环境的一半就到位了。3. 环境变量与初始化检查让 Git 在 PowerShell 和 VS Code 里都被“看见”3.1 为什么装完 GitVS Code 还是提示找不到 Git这个问题在同事的电脑上出现频率极高。常见原因有三个一是安装时 PATH 选成了第一项“仅 Git Bash 可用”。二是安装完成后没有重启 VS Code编辑器还停留在“找不到 git”的老状态。三是公司的用户环境变量被安全软件改了安装目录和当前系统用户名对不上。判断方法很简单在 VS Code 里打开终端输入git --version。如果能运行但左侧源代码管理图标还是消失或报警那就关掉 VS Code 重新打开一次。VS Code 是在启动时扫描 PATH 的不重启就不会刷新。3.2 手动添加 Git 到 PATH 的完整步骤如果你装完 Git 之后在 PowerShell 里输入git仍然提示找不到命令先检查一下系统里到底有没有 git.exe。喂可以是 PowerShell 里执行where.exe git如果没有输出说明 Git 没进 PATH。进入“设置 → 系统 → 系统信息 → 高级系统设置 → 环境变量”在“系统变量”里找到Path点“编辑”再点“新建”粘贴C:\Program Files\Git\cmd如果你当初安装时自定义了目录就填你自己的目录下的cmd文件夹。比如你装在D:\Git那就填D:\Git\cmd。填完之后一定要把所有已打开的终端全部关掉再重开否则还是读不到新 PATH。这时再执行git --version能输出版本号就说明配置成功。3.3 初始化检查清单用户名、邮箱、默认分支、自动换行我把装完 Git 之后的初始化检查整理成五步每一步都很短但能避免后面 80% 的诡异问题# 1. 查看版本 git --version # 2. 查看全局配置 git config --global --list # 3. 重新设置用户名与邮箱如果之前没设 git config --global user.name 你的名字 git config --global user.email 你的邮箱 # 4. 设置默认分支名为 main git config --global init.defaultBranch main # 5. 查看 Git 安装位置 where git第 4 步为什么要单独提Git 默认创建新仓库时分支名是master但这几年托管平台默认分支基本都是main。把全局默认分支改成main以后本地建仓库和远程仓库保持一致省得每次还要手动改分支名。至于自动换行Git for Windows 安装时已经设置了core.autocrlftrue只提交代码到远端时会自动把 Windows 的 CRLF 换成 Unix 的 LF避免团队成员在不同系统上协作时出现大量换行差异。平时我们在 Windows 上写代码几乎不需要动这个配置。4. SSH 密钥一条龙生成、加载、绑定、验证4.1 为什么 SSH 比 HTTPS 更适合日常工作用 HTTPS 方式 clone 远程仓库好像也能用尤其配合 Git Credential Manager第一次输一次密码后面就不用输了。但 Token 有有效期过期之后 push 时又会弹窗要求重新认证而且公司内网的自建 GitLab 频繁改密也是常态。SSH 的工作原理不一样你在本地生成一对密钥私钥和公钥把公钥放到远程平台上之后每次连接远程平台通过公钥加密内容来验证你的身份。只要私钥不泄露就可以一直免密操作。对每天 push 好多次的开发者来说这个体验差异非常明显。4.2 生成密钥选 Ed25519 还是 RSA2026 年新生成 SSH 密钥我默认推荐Ed25519它的优点是密钥短、生成速度快、安全性足够而且主流的 Git 托管平台都已经支持。打开 PowerShell 或 Git Bash先看看你已有的 SSH 目录是否存在ls ~/.ssh如果你之前没生成过密钥这个目录可能还不存在或者只有一个known_hosts文件。接下来直接生成ssh-keygen -t ed25519 -C youexample.com其中-C后面通常写邮箱它只是一个备注方便你在远程平台看到这把密钥是哪台机器、给谁用的并不会强制校验。命令执行后开始会让你确认保存位置Generating public/private ed25519 key pair. Enter file in which to save the key (/c/Users/你的用户名/.ssh/id_ed25519):直接回车使用默认路径即可。接着会问Enter passphrase (empty for no passphrase):这个 passphrase 是给私钥再加一道锁。如果你只有自己一个人用这台电脑不想每次操作都输入密码可以直接回车跳过。如果这是公司电脑或者电脑有被借走的可能我还是建议设一个。设置了之后后面配合 ssh-agent 可以让它在当前会话里只输入一次。如果你的远程平台比较老不支持 Ed25519那就改用 RSA 并指定长度ssh-keygen -t rsa -b 4096 -C youexample.com生成完以后~/.ssh目录下会出现两个关键文件id_ed25519私钥绝对不能外传等同于你的身份。id_ed25519.pub公钥可以公开复制到 GitHub/Gitee/GitLab 上。4.3 让 ssh-agent 在 Windows 上跑起来私钥生成以后默认并不会自动加载到内存里。如果你跳过 passphrase其实也能直接用但如果设了 passphrase你每次 git push 都可能要输。要解决这个问题就需要让 ssh-agent 帮忙在后台记住密钥。Windows 上运行 ssh-agent 有两种常见方式。第一种是在管理员 PowerShell 里启动 Windows 系统自带的 OpenSSH 服务Get-Service ssh-agent Set-Service -Name ssh-agent -StartupType Automatic Start-Service ssh-agent设置成Automatic之后以后开机也会自动运行。确认服务状态Get-Service ssh-agent看到 Status 为 Running 就说明成功。第二种方式是在 Git Bash 里临时启动一个 agenteval $(ssh-agent -s)这种方式的缺点是每次打开新的 Git Bash 都要重新执行一次所以我更推荐第一种让 Windows 把服务常驻起来。无论用哪种方式启动完 agent 后把私钥添加进去ssh-add ~/.ssh/id_ed25519执行完可以查看当前 agent 里有哪些密钥ssh-add -l能列出刚才添加的密钥说明加载成功。4.4 绑定公钥到远端平台现在需要把公钥内容复制出来。执行cat ~/.ssh/id_ed25519.pub输出是一行以ssh-ed25519或ssh-rsa开头、邮箱结尾的字符串比如ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK... youexample.com复制这段完整内容不要改任何字符。然后GitHub右上角头像 → Settings → SSH and GPG keys → New SSH keyTitle 随便填Key 粘贴公钥内容保存。Gitee头像 → 设置 → 安全设置 → SSH 公钥 → 添加公钥。GitLab头像 → Preferences → SSH Keys → Add new key。填完后回到终端测试一下。4.5 验证连接该看到什么才算成功GitHub 的测试命令是ssh -T gitgithub.com第一次连接会出现The authenticity of host github.com (IP段) cant be established.这是正常的说明你的电脑还没有记录过 GitHub 的主机指纹。输入yes回车即可。会继续提示Hi 你的用户名! Youve successfully authenticated, but GitHub does not provide shell access.看到这句话就是成功。Gitee 的测试命令是ssh -T gitgitee.comGitLab 一般是ssh -T gitgitlab.com公司自建 GitLab 则替换成公司域名。如果失败不要慌往下看第 6 节的报错对照表。5. 多平台多密钥管理GitHub、Gitee、GitLab 共存的 SSH 配置方案5.1 一个密钥能不能到处用可以但不推荐有人会在 GitHub、Gitee、公司 GitLab 上用同一把公钥这在技术上没有任何限制远程平台只认公钥的合法性不关心你其他平台是否用过同一把。但这会带来两个问题第一如果某台平台的服务器被拖库或者管理员日志泄露别人拿到你的公钥至少能知道你在这几个平台用的是同一把钥匙跨平台追踪就更容易了。第二如果某一天你从“个人用电脑”变成“个人 工作混用”你会很希望能单独撤销公司那台机器上的访问权限。共用一把密钥撤销时只能把公钥从所有平台都删掉工作量会翻倍。所以我建议个人 GitHub 一把密钥、Gitee 一把密钥、公司 GitLab 一把密钥互不干扰。操作起来没有想象中麻烦关键是建好config文件。5.2 建立~/.ssh/config文件如果你管理多把密钥就需要通过~/.ssh/config告诉 SSH 哪个主机用哪把私钥。用 VS Code 或文本编辑器打开这个文件没有就新建内容参考这样Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github AddKeysToAgent yes Host gitee.com HostName gitee.com User git IdentityFile ~/.ssh/id_ed25519_gitee AddKeysToAgent yes Host gitlab-work HostName gitlab.your-company.com User git IdentityFile ~/.ssh/id_ed25519_work AddKeysToAgent yes注意几点Host是你在 Git 命令里要写的别名。比如Host github.com那么 clone 地址仍然是gitgithub.com:用户名/仓库.git如果Host改成github-personal那 clone 地址就要写成gitgithub-personal:用户名/仓库.git。HostName是真正的连接域名别和Host搞反了。IdentityFile指向对应的私钥路径写相对路径~/.ssh/xxx在 Git Bash 和 PowerShell 里都能识别。AddKeysToAgent yes表示连接时自动把密钥加载进 agent省得手动执行ssh-add。生成多把密钥的方法和前面一样只是生成时需要指定不同文件名。比如ssh-keygen -t ed25519 -C github邮箱 -f ~/.ssh/id_ed25519_github ssh-keygen -t ed25519 -C gitee邮箱 -f ~/.ssh/id_ed25519_gitee然后分别把对应公钥内容粘贴到对应平台。5.3 测试多平台连接是否各自匹配配置完config后测试时不要只测一个。建议把三个平台的测试都跑一遍ssh -T gitgithub.com ssh -T gitgitee.com ssh -T gitgitlab-work如果github.com实际连接时却用了工作密钥大概率是Host名称和HostName的组合没写对或者~/.ssh/config的权限问题导致 SSH 没读这个文件。在 Git Bash 里可以加-v参数看详细过程ssh -vT gitgithub.com重点看输出里的debug1: Offering public key后面跟着的是哪个密钥文件就能定位问题。5.4 给密钥文件设置合理权限Windows 下生成的密钥默认 ACL 权限只允许当前用户访问一般问题不大。如果你是从项目同事或旧电脑拷贝过来的密钥SSH 可能因为“权限太开放”而拒绝加载提示Permissions for id_ed25519 are too open。在 Windows PowerShell 里可以用icacls把私钥权限改成只有当前用户icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r $env:USERNAME:(R,W)这里不建议所有人一上来就执行只有当你遇到权限报错时才需要。正常情况下让 SSH 自己生成的密钥就已经是安全权限。5.5 每个仓库单独指定用户信息全局用户信息代表你默认的提交身份。如果你在同一台电脑上既是 GitHub 个人项目又是公司 GitLab很容易出现“用公司邮箱提交到了个人仓库”的尴尬。最好的办法是全局配置设成个人身份公司仓库用局部配置覆盖。进入公司仓库目录执行git config user.name 公司里的名字 git config user.email 公司邮箱上面命令不带--global写入的就是当前仓库的本地配置。以后在这个仓库提交Git 会优先读本地配置不会混用个人身份。检查一下git config --local --list6. 高频报错对照表与我的排查习惯6.1 报错对照表环境配好之后大多数问题都集中在 SSH 连接和 PATH 上。我把遇到的高频报错整理成一张表你直接对着找解决办法。报错信息原因解决办法git 不是内部或外部命令Git 没加入 PATH按第 3 节手动添加C:\Program Files\Git\cmd并重启终端Permission denied (publickey)远程平台没识别公钥或 ssh-agent 没加载私钥检查公钥是否粘贴到平台执行ssh-add ~/.ssh/id_ed25519后重新测试Host key verification failed.远程主机指纹发生变化known_hosts 里有旧记录执行ssh-keygen -R github.com清除旧记录后重连The authenticity of host cant be established第一次连接该主机未知指纹输入yes正常现象Could not read Username for https://github.comHTTPS 方式下载代码时密码框无法输入改用 SSH 方式 clone或者去平台生成访问令牌替代密码warning: LF will be replaced by CRLFGit 在提交时把换行符做转换一般无碍如果团队有强制要求可增加.gitattributes统一规范fatal: refusing to merge unrelated histories本地仓库和远程仓库没有共同提交历史如果是故意合并执行git pull origin main --allow-unrelated-historiesRecv failure: Connection was reset网络不稳定或托管平台连接被重置检查网络换 Gitee 或其他可用托管平台或稍后重试6.2 我的标准排查链路我排查环境问题不会一上来就百度报错而是按这套固定流程走通常几分钟内能定位git --version—— 确认 Git 本体能运行。where git—— 确认当前环境用的是哪个目录下的 git。git config --global --list—— 确认全局用户配置和换行配置是否正常。ls -la ~/.ssh—— 确认密钥文件存在且文件名符合预期。ssh-add -l—— 确认私钥是否加载进 agent。ssh -vT gitgithub.com—— 用详细模式观察握手过程重点看Offering public key是否出现以及出现的是哪把密钥。只要走到第 6 步报错原因基本都能在输出里找到。debug1开头的日志信息很多不用全看懂只看有没有Permission denied和Authenticated这两个关键词。6.3 什么时候值得把环境推倒重来如果你排查之后发现 PATH 乱了、密钥也乱了、config 文件也改得不成样子这时候最省时间的方案不是继续改而是“备份后重装”。重装之前把两个地方备份好全局配置%USERPROFILE%\.gitconfigSSH 目录%USERPROFILE%\.ssh\整个文件夹把这两个目录复制走然后到“设置 → 应用”里卸载 Git重新走一遍第 2 节的安装流程。装好后再把.ssh文件夹放回原位把.gitconfig放回用户目录环境立刻恢复。我自己在这个方案里吃过不少经验教训最典型的一个是为了给某个旧仓库修一个问题手动把全局 PATH 改得乱七八糟结果 VS Code 里所有扩展都找不到 git。与其反复修不如直接重装半个小时就能回到干净状态。6.4 最后一个小习惯如果你经常在 Windows 上操作多个 Git 仓库我建议在.gitconfig里加一个别名清单日常手感会有明显提升git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.lg log --oneline --graph --all --decorate这些别名不涉及环境安全却能让常用命令短很多。配置完成后执行git lg就能看到漂亮的提交历史树这也是我每次帮别人调完环境后顺手会做的一个“交工小彩蛋”。