Windows Git 安装与 SSH 密钥配置避坑指南,从入门到实操全程详解 很多年前我第一次在 Windows 上装 Git以为就是“下一步下一步”的事结果装完之后在各种终端里敲git --version一会儿能用一会儿不能用配个 SSH 密钥搞到半夜。所以这次我干脆把从下载到 SSH 密钥配置的完整流程按我自己的实操习惯重新整理一遍。不管你是刚接触 Git 的新手还是平时只会在 IDE 里点点点、突然被要求走命令行做代码同步的同事这篇文章都值得你收藏一遍。先说清楚这篇文章能帮你解决什么拿到手就能照着做完 Windows 上 Git 的完整安装与环境配置同时把 SSH 密钥生成、添加到代码托管平台、连接验证这几件事一次搞清楚。重点不是我告诉你“敲哪条命令”而是让你知道“为什么是这条命令”“这一步不选会有什么后果”。这样才能真正避坑。为了照顾从零开始的读者我会把每个步骤背后的原因也讲清楚。已经是老手的可以直接跳到你需要的章节但建议至少扫一眼配置部分的几个细节我踩过的坑你可能正在踩。1. 下载安装前的两个关键选择1.1 官网下载还是国内镜像下载Git 官网git-scm.com其实提供了 Windows 版本的安装包但国内很多朋友反馈官网下载速度时快时慢尤其是刚发布大版本那几天有时候一个几十 MB 的包能卡半天。我之前也遇到过等了十分钟进度条没动气得直接退了。如果你不想忍受这个速度有两个替代方案比较稳清华大学开源软件镜像站地址是 mirrors.tuna.tsinghua.edu.cn/git-for-windows/里面有个v2.x.x.windows.x的目录结构找最新的稳定版本就行。阿里云镜像站mirrors.aliyun.com/git-for-windows/同样有完整的版本列表。腾讯软件源mirrors.cloud.tencent.com/git-for-windows/也值得备用。三个镜像的内容都是同步官方发布的校验值也一致不用担心“是不是改过的包”。如果你在公司内网下载外网受限这几个镜像有时候反而是唯一能用的通道。提示下载时优先选 64-bit 版本现在绝大多数 Windows 系统都是 64 位。如果你的电脑还是 32 位系统那就只能选 32-bit 安装包了。不确定的话按Win Pause打开系统信息看“系统类型”那一栏。1.2 安装包版本怎么选Git for Windows 的版本号一般长这样2.47.1.windows.1、2.48.1.windows.2。我的习惯是选择“非 rc、非 preview”的正式发布版本并且避开刚发布的 .0 版本。因为 Git 属于底层工具安装之后要配合各种 IDE、脚本、CI 流水线使用太新的版本有时候会和旧系统组件有小冲突虽然过几天官方就会修但没必要用自己的环境去试错。另外当你看到Git-2.x.x-64-bit.exe和Git-2.x.x-64-bit.tar.bz2这两种文件时选.exe那个。.tar.bz2是绿色便携版解压就能用不需要安装但环境变量、右键菜单之类的都要自己配不适合大多数人。我的建议版本策略如果你之前已经装了某个版本且用着正常不用急着升级。工具链稳定比版本新更重要。真正需要升级的场景是你发现当前版本无法识别某个新平台推送的密钥格式或者 IDE 提示 Git 版本过低。2. 安装过程的每一步都不白点2.1 安装向导核心选项图解Git 的安装向导看起来就是“Next 到底”但其中有几步的选择会影响后续使用。下面我把几个关键步骤拆开讲。第一步选择安装路径默认路径一般是C:\Program Files\Git我建议直接保持默认。有人喜欢改到D:\Git也不是不行但要注意如果路径带空格部分老脚本处理起来会出问题C:\Program Files\Git其实本身就带空格不过 Git 官方已经处理得很好不会再像十年前那样有兼容问题。第二步选择组件这一步会有很多复选框默认选项很合理但有两个地方值得单独看一眼“Git Bash Here”和“Git GUI Here”建议保留。这给你的鼠标右键增加了入口在文件夹里直接打开 Git Bash 非常方便。“Add a Git Bash Profile to Windows Terminal”如果系统是 Windows 11 或者有 Windows Terminal建议勾上之后可以在 Terminal 下拉菜单里直接开 Git Bash。第三步选择默认编辑器这里默认是 Vim很多新手在这步都会懵以后不管提交代码还是改配置弹出来的全是 Vim操作不熟悉的话真的会卡住不知道怎么保存退出。如果你不是专门用 Vim 的人建议下拉选成“Notepad”如果你装了的话或者 Visual Studio Code。要是电脑上啥编辑器都没有那就选 Nano它比 Vim 友好得多——不过实际上 Git 自带的安装环境里通常会提供 Nano 选项。我个人推荐用 VS Code界面友好、语法高亮清晰提交信息写起来舒服很多。注意如果安装完成后想改默认编辑器不用重新安装执行命令即可git config --global core.editor code --wait前提是 VS Code 已经安装了“Shell 命令安装 code”那一项在 VS Code 里按CtrlShiftP输入 “Shell Command: Install ‘code’ command in PATH”。第四步调整 PATH 环境变量这一步有3个选项“仅从 Git Bash 使用 Git”Use Git from Git Bash only选这个的话在 CMD 和 PowerShell 里敲git会提示找不到命令只能打开 Git Bash 用。“从命令行以及第三方软件使用 Git”Recommended把 Git 加入系统 PATHCMD、PowerShell 也都能直接调用。这是官方推荐也是大多数人的选择。“从命令提示符使用 Git 和可选的 Unix 工具”除了 Git 还把一些 Unix 工具注入到系统 PATH容易和系统自带命令产生覆盖冲突不建议选。第五步选择 HTTPS 传输后端这里有两个选项OpenSSL 和 Windows 原生通道SChannel。默认是 OpenSSL原因很简单Git 生态和证书体系默认都是走 OpenSSL 的兼容性更好。如果你在一个强企业管控环境里公司要求用 Windows 证书库来验证 SSL 证书那才需要切到 SChannel。这种情况属于少数其他朋友保持默认就好。第六步行结尾转换方式这一步非常重要也是新手最容易忽略的默认选项是“检出 Windows 风格提交 Unix 风格”Checkout Windows-style, commit Unix-style line endings。意思是从远端拉代码到本地时自动把行尾从 LF 转成 CRLF提交到远端时自动把 CRLF 转回 LF。好处是本地 Windows 工具链兼容性好坏处是仓库里可能出现“整个文件被标记为修改”的诡异情况后面我会讲。第二个选项是“按原样检出提交时转成 Unix 风格”Checkout as-is, commit Unix-style line endings。适合团队统一使用 Unix 风格行尾、你本地也不用那些老旧的 Windows 文本编辑器的场景。第三个选项是“按原样检出按原样提交”。如果你在纯 Windows 环境且不跨平台协作可以选这个但只要是跨平台协作我都不推荐这个因为它会把 Windows 行尾直接提交进仓库团队里其他 Unix 系统成员就会看到一堆“文件变更”。我的实际建议如果你常用 VS Code 或现代编辑器可以选第二个或者干脆用.gitattributes文件统一规范这个后面细说新手默认用第一个也能跑通没必要在这步纠结太久。第七步选择终端模拟器这一步问你 Git Bash 使用哪个终端模拟器MinTTY 还是 Windows 默认控制台窗口。默认是 MinTTY它支持一些更丰富的终端控制序列比如颜色、光标定位看起来更接近 Linux 终端体验。保留默认即可。只有当你觉得 Git Bash 窗口里选中文本、复制粘贴的交互不习惯时才考虑切到 Windows 默认控制台。2.2 安装完成后先做两个小验证安装结束后先别急着配 SSH。打开任意终端Git Bash 或 PowerShell 都可以依次做两个验证git --version能看到类似git version 2.47.1.windows.1的输出说明安装成功且 PATH 生效了。where git这个命令在 Windows 上会列出 git 可执行文件的路径。如果结果里有多个路径要留意是不是装了多个 Git 版本。多版本并存是很常见的问题根源终端里敲git用的是旧版你以为是新装的结果行为千奇百怪。遇到这种情况把旧版本卸载干净只留一个。另外建议把 Git 自带的usr/bin目录里的常用命令比如ls、grep、find也说一下——它们只作用于 Git Bash 环境不会影响系统里原来的同名的工具所以不冲突。有些人以为选第三项才会引入这些工具其实 Git Bash 内部一直有第三项只是把它们暴露到系统全局 PATH 而已。3. 基础环境配置不配这几项后面全是坑3.1 必须设置的 user.name 和 user.email很多人安装完 Git 直接就去克隆仓库结果提交代码时要么报错要么提交记录里的作者信息是一串乱码。原因是 Git 在提交时需要一个作者身份它优先读取本地的user.name和user.email没设置的话它就去猜猜不出来就报错。打开 Git Bash执行下面两行把你自己的信息填进去git config --global user.name Your Name git config --global user.email your_emailexample.com这里有两个细节值得注意--global表示当前 Windows 用户全局生效也就是你这个账号下所有仓库都会用这个身份。如果公司项目和私人项目需要不同身份不要在这里设置而是去特定仓库目录下执行不带--global的版本。email 建议和你的代码托管平台GitHub / Gitee / GitLab注册邮箱保持一致。尤其是 GitHub它通过邮箱关联提交者头像和主页不一致的话你的提交不会显示在贡献图上。验证设置是否生效git config --global --list会输出你设置过的所有全局配置。3.2 行尾符、缓存与常用优化配置先看行尾符这是 Windows 用户最容易踩的坑之一。默认配置是core.autocrlftrue对应前面安装时选的第一项它会在检出时把 LF 转成 CRLF提交时把 CRLF 转回 LF。听起来很贴心但实际场景里它可能导致一个问题某些文件比如.sh脚本、.gitlab-ci.yml、Dockerfile被强制转换后行为异常或者在某些编辑器里整个文件被标记为改动。更推荐的做法是在仓库根目录放一个.gitattributes文件显式声明各类文件的换行规则。比如* textauto *.sh text eollf *.bat text eolcrlf *.cmd text eolcrlf这样不管团队成员用 Windows、macOS 还是 Linux行尾都会按照声明统一处理比每个人的本地配置靠谱得多。如果你不想折腾.gitattributes那至少把全局的core.autocrlf设置为false或input结合现代编辑器的自动处理也能减少一些诡异问题。再补充几个我常用的配置项它们对提升日常体验很有用# 让 Git 记住 HTTPS 登录凭据 git config --global credential.helper manager # 提交时显示短状态 git config --global status.short true # 默认分支名设为 mainGitHub 风格 git config --global init.defaultBranch main # 设置别名简化常用命令 git config --global alias.co checkout git config --global alias.ci commit git config --global alias.st status git config --global alias.lg log --oneline --graph --all --decorate关于凭据管理器多说一句Windows 上 Git 默认会带一个 Git Credential Manager第一次用 HTTPS 方式推送时它会弹出一个窗口让你登录托管平台登录成功后凭据会安全地存在 Windows 凭据管理器里。之后你再推代码就不会重复要求输账户密码了。如果你不想弹这个窗口或公司自建 GitLab 用 HTTPS 但总提示认证失败可以在控制面板的“凭据管理器”里查看、修改或删除已有的 Git 凭据删掉后再重新推一次代码就会重新认证。3.3 配置文件的存储位置与优先级Git 配置有三个层级按优先级从高到低分别是仓库级.git/config、全局级用户主目录下的.gitconfig、系统级安装目录下的etc/gitconfig。同名配置项仓库级会覆盖全局级全局级会覆盖系统级。在 Windows 上全局配置文件的路径通常是C:\Users\你的用户名\.gitconfig可以直接用文本编辑器打开。不过我更推荐用命令来改因为文件编码和格式如果手动改坏Git 可能会直接报解析错误。查看层级配置时在命令后面加--show-origin能显示每一项来自哪个文件git config --global --list --show-origin这在排查“我明明改了配置为什么没生效”的时候非常有用。4. SSH 密钥配置从生成到验证一条龙4.1 为什么优先用 SSH 而不是 HTTPS有两个原因让我建议 Windows 用户优先配置 SSH不用反复输密码HTTPS 方式配合凭据管理器也能记住密码但 SSH 用的是密钥对天然就是免密的尤其在命令行里操作时更顺畅。更安全SSH 密钥本身不会在网络中传输传输的只是基于密钥派生出的验证信息。HTTPS 则依赖密码或令牌Token一旦终端被记录或截图外泄风险面更大。当然SSH 也有一些不适合的场景比如某些公司内网出于安全审计要求只开放 HTTPS 端口443不允许 SSH 端口22外连那就只能走 HTTP。这种情况不能硬来先确认网络策略再选方案。4.2 生成密钥前的准备与算法选择先打开 Git Bash检查一下是否已经有现成的密钥ls -al ~/.ssh如果看到id_ed25519和id_ed25519.pub这类文件说明已生成过密钥。如果你不记得这个密钥的密码或者想让新设备用新密钥可以跳过旧密钥重新生成一份。生成密钥的语法是ssh-keygen -t ed25519 -C your_emailexample.com有几个参数我需要解释一下-t ed25519指定密钥算法。现在推荐 Ed25519比传统的 RSA 更短更安全且 GitHub、GitLab、Gitee 都已经支持。有些老旧的内部系统不支持 Ed25519那种场景下用 RSA 更稳妥ssh-keygen -t rsa -b 4096 -C your_emailexample.com新旧选择的核心是看目标平台和服务器支持哪种算法而不是盲目追新。-C添加备注信息常见写法是邮箱但这不是登录凭证只是方便你记住这个密钥是干嘛用的。执行后会问你保存路径一般直接回车存到默认位置~/.ssh/id_ed25519即可。然后会让你设置 passphrase口令短语。这里我建议设置一个它是密钥文件的额外保护层。就算别人拷走了你的私钥文件没有口令也用不了。日常使用可以通过 ssh-agent 把私钥加进内存之后一段时间内都不用重复输入口令后面讲。设置口令的唯一“缺点”是脚本自动化场景里可能触发交互输入如果你是纯自动部署环境可以用ssh-agent或部署平台自己的密钥管理机制而不是不设口令。4.3 将公钥添加到代码托管平台生成结束后用下面的命令读取公钥内容cat ~/.ssh/id_ed25519.pub输出以ssh-ed25519开头的一大串内容把它全部复制注意不要漏掉结尾的邮箱备注。然后登录你的 GitHub或 Gitee / GitLab路径基本是GitHub右上角头像 → Settings → SSH and GPG keys → New SSH keyGitee设置 → 安全设置 → SSH 公钥GitLab偏好设置 → SSH 密钥把复制的内容粘贴到 Key 文本框Title 随便写一个能认出来的名字比如“My Windows PC”。保存之后公钥就生效了。这里有一个容易踩的坑公钥是一次性显示的内容不是私钥。id_ed25519.pub可以给别人看但id_ed25519没有后缀是私钥文件绝不能外传。很多人截图时不小心连私钥一起发到群里那基本等于把门钥匙给了别人。4.4 把私钥交给 ssh-agent 管理每次用 SSH 连接时如果私钥设置了口令终端会再问一次口令。为了避免反复输入可以把私钥交给 ssh-agenteval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519执行ssh-add时会要求你输入一次私钥口令之后当前终端会话内就不再询问了。不过这里有个 Windows 特有的问题Git Bash 里启动的 ssh-agent 只对当前终端有效关掉窗口就没了。如果你希望每次打开 Git Bash 都自动加载密钥可以考虑配置~/.bashrc把上面两行加进去。但这不是必须的如果你是临时用每次手动执行也不是很麻烦。4.5 测试 SSH 连接是否成功配置完成后用下面的命令测试和 GitHub 的连接ssh -T gitgithub.com第一次连接时终端会提示确认远端主机的指纹fingerprint输入yes回车即可。如果一切正常会看到类似这样的输出Hi username! Youve successfully authenticated, but GitHub does not provide shell access.看到这句话说明 SSH 链路已经通了。同理Gitee 的测试命令是ssh -T gitgitee.comGitLab 需要根据实际域名来如果公司自建 GitLab 的地址是gitlab.example.com那就是ssh -T gitgitlab.example.com注意如果是自建 GitLab且端口不是默认的 22比如公司用了 2222测试命令要改成ssh -T -p 2222 gitgitlab.example.com。端口信息一般在你创建代码仓库后的页面提示里能看到。4.6 多平台、多账号的 SSH 配置方法很多人问我有 GitHub 和 Gitee 两个账号甚至公司 GitLab 一个账号怎么办全用同一把密钥当然能通但如果你想隔离不同身份就需要在~/.ssh/config文件里做主机别名配置。先创建配置文件touch ~/.ssh/config然后编辑它示例内容如下Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github IdentitiesOnly yes Host gitee.com HostName gitee.com User git IdentityFile ~/.ssh/id_ed25519_gitee IdentitiesOnly yes Host gitlab.company.com HostName gitlab.company.com Port 2222 User git IdentityFile ~/.ssh/id_ed25519_company IdentitiesOnly yes几个关键配置点说一下IdentityFile指向对应的私钥路径。Port只在你确认目标服务器不是 22 端口时才需要指定。IdentitiesOnly yes告诉 SSH 只使用这里指定的私钥不要自作主张用其他默认私钥去试。这一步很关键否则系统按顺序尝试多个私钥可能导致某个平台因为私钥不匹配而连接失败。配置好后对应平台的克隆地址直接按原样写就行不用改 URL 里的主机名SSH 会根据 Host 自动匹配到对应配置。4.7 SSH 连接失败的常见排查这里把我见过最多的几种异常列成表格方便对照排查现象可能原因解决办法Permission denied (publickey)公钥没加到平台或私钥路径不对确认ssh-add -l能看到私钥在平台后台确认公钥已添加且无多余空格Host key verification failed目标主机的指纹从未见过或指纹变化如果是首次连接输入 yes 确认如果之前连接过但指纹变了执行ssh-keygen -R 主机名清除旧指纹后重试Connection timed out22 端口被防火墙或网络策略拦截换用 SSH over HTTPS 端口连接 GitHub 用ssh -T -p 443 gitssh.github.com或在~/.ssh/config里给 github.com 设置HostName ssh.github.com和Port 443Bad owner or permissionsWindows 上权限检查误报如果你的私钥是从别的设备拷过来的检查文件属性必要时重新生成密钥别硬改成 loose 权限Unable to negotiate算法不匹配目标服务器不支持你本机优先级的算法在~/.ssh/config里为目标主机指定HostKeyAlgorithms或PubkeyAcceptedAlgorithms但建议优先升级服务器端配置Windows 上还有一个比较隐蔽的坑如果你同时安装了 Git for Windows 自带的 OpenSSH 和 Windows 系统自带的 OpenSSH通常是可选功能ssh命令调用的可能是版本不一致的那一个。排查方法where ssh结果里如果出现两个路径注意优先使用 Git 安装目录下的那个比如C:\Program Files\Git\usr\bin\ssh.exe。解决方法是调整系统 PATH 的优先级或直接卸载 Windows 自带的 OpenSSH 客户端。5. 让 Git 在 Windows 上更好用的几个技巧5.1 推荐的终端与别名配置很多 Windows 用户对 Git Bash 的黑底绿字无感更喜欢 Windows Terminal 的现代外观。Windows 11 自带 Windows TerminalWindows 10 可以在 Microsoft Store 免费安装。在 Windows Terminal 里可以添加 Git Bash 作为配置文件体验比默认窗口好很多。如果你也想折腾一下 Git Bash 的提示符可以看下~/.bashrc文件加入一些别名。比如alias gsgit status alias gagit add . alias gcgit commit -m alias gpgit push alias glgit pull alias lggit log --oneline --graph --all --decorate注意Git Bash 使用的是 Bash 语法不是 PowerShell。如果你平常用的是 PowerShell需要另外配 PowerShell 的 profile不能用这套别名。5.2 解决 Git 命令中文乱码和文件名问题Windows 上 Git 还常被问到一个问题仓库里的中文文件名在git status中显示成\346\265\213\350\257\225.txt这种八进制转义。这是 Git 的转义显示策略不是乱码但它确实让人看着头疼。执行以下配置可以更友好地显示中文文件名git config --global core.quotepath falsecore.quotepathfalse之后中文文件名会正常显示原字符。这不会影响仓库内部存储只是改变了显示行为。另外如果你在 Git Bash 里看中文注释有乱码主要是终端编码和 Git 的输出编码不一致导致的。可以在 Git Bash 窗口右键“Options” → “Text”里把字符集改成 UTF-8并把本地提交信息的默认编码也统一为 UTF-8git config --global i18n.commitEncoding utf-8 git config --global i18n.logOutputEncoding utf-85.3 大仓库与 Windows Defender 的“爱恨情仇”Windows Defender 默认会对文件实时扫描而 Git 在操作大仓库时要读写大量文件有时触发 Defender 扫描导致git status、git pull慢得明显。如果你所在团队的仓库比较大几百 MB 甚至几 GB并且你自己电脑上已经用了别的安全软件可以考虑把 Git 的安装目录和你的本地仓库目录加进 Defender 的排除列表。坦白说这操作有安全风险我一般只在确实感觉“慢到严重影响工作效率”时才会建议用户做。如果你公司安全策略不允许改那就别折腾了慢就慢点吧。5.4 企业 Windows 环境下的代理配置技巧如果你的开发环境需要走 HTTP 代理访问外网比如拉取 GitHub 仓库Git 需要单独配置代理不会自动读取 Windows 的 IE 代理设置git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890注意上面只是格式示例端口号按你自己的代理软件实际监听的端口填。如果不需要代理了用git config --global --unset http.proxy和git config --global --unset https.proxy移除配置。SSH 查询 GitHub 时代理是按 SSH 配置走的不是走 Git 的 http.proxy。可以在~/.ssh/config里加Host github.com HostName github.com User git ProxyCommand connect -H 127.0.0.1:7890 %h %p不过这依赖connect工具Git Bash 自带如果你用的是 CMD 或 PowerShell 环境会有额外的适配问题。日常用 Git 走 HTTPS 的话配置好 http.proxy 就够了SSH 这块按需处理。6. Windows 环境下的特殊注意事项6.1 Git Bash 与 CMD、PowerShell 的差异很多新手分不清 Git Bash、CMD、PowerShell 到底是什么关系我这里用一句话说清楚Git Bash 是一个模拟 Linux 终端的环境内置了一些 Unix 工具CMD 是 Windows 传统命令行PowerShell 是微软主推的现代 shell。Git 命令在这三者的语法基本一致但脚本写法和路径规则不一样。Git Bash 中路径习惯用/c/Users/用户名CMD 和 PowerShell 用C:\Users\用户名。环境变量引用方式不同Git Bash 用$HOMEPowerShell 用$HOME也可以CMD 用%USERPROFILE%。如果你在 PowerShell 里执行cat ~/.ssh/id_ed25519.pub它会调用 PowerShell 的Get-Content功能上差不多但参数风格完全不同。我的建议是日常使用统一在 Git Bash 里操作别一会儿 Bash 一会儿 PowerShell。尤其在执行本文的命令时统一用 Git Bash 能避免很多莫名其妙的问题。6.2 权限模型、管理员权限与符号链接Windows 的权限模型和 Unix 差别很大这也带来了一些 Git 相关的边界问题。比如git clone一个包含符号链接symbolic link的仓库时Windows 上可能需要开发者模式或管理员权限否则符号链接可能被降级成普通文本文件或直接跳过。解决方法是打开“设置 → 开发者选项 → 启用开发人员模式”这样普通用户也能创建符号链接Git 就能正常处理这类仓库结构。另外有时候你在某些目录下执行git命令时提示“权限不足”先别急着用“以管理员身份运行”去掩盖问题。很多情况是仓库目录所在的父目录被 OneDrive 同步或公司安全软件锁定或者目录权限继承关系不正确。检查一下目录属性里的“安全”选项卡更稳妥。6.3 升级与卸载的干净处理Git 升级在 Windows 上比较简单下载新版安装包直接覆盖安装即可全局配置和~/.ssh目录不会受影响因为安装程序不会动用户目录里的配置。如果因为某些原因要彻底卸载我建议先备份C:\Users\用户名\.gitconfig和~/.ssh目录再用“设置 → 应用”里卸载 Git最后手动检查系统 PATH 环境变量里是否还残留 Git 相关的路径有些版本卸载不彻底。不清理干净的话下次装新版可能出现 PATH 重复或版本冲突。6.4 公司电脑的特殊策略BitLocker、受管设备与证书校验如果你在公司电脑上安装 Git可能会遇到几类策略限制设备受 Intune 或域策略管控无法安装从互联网下载的 exe。公司可能要求 Git 走自建代理且要求校验企业私有 CA 证书这时 Git 的 SSL 校验会失败。第一种情况通常要找 IT 部门申请白名单或使用公司软件中心安装没什么技术捷径。第二种情况可以在 Git 配置里指定 CA 证书git config --global http.sslCAInfo C:\Users\用户名\company-ca.crt或者临时关闭 SSL 校验强烈不推荐除非你完全清楚风险git config --global http.sslVerify false我不建议用第二种方式因为它会让你本地所有 HTTPS 推送都失去证书校验很容易被中间人攻击。更好的选择是向 IT 部门要公司 CA 证书文件然后配置到 Git 的信任列表里。7. 提交代码的完整工作流演练配置完毕我带你走一遍从新建仓库到推送的完整流程把前面讲的配置在真实操作里串起来。7.1 初始化仓库和第一次提交mkdir my-project cd my-project git init此时 Git 会在当前目录生成一个.git隐藏文件夹这就是仓库的“数据库”。然后新建一个文件比如README.md写点内容再执行git add README.md git commit -m 初始化项目这里有两个新手常犯的细节问题git add .把当前目录所有改动加入暂存区这是常用操作但如果你不想提交某些文件需要提前准备好.gitignore。我建议git init之后立刻创建.gitignore把编译器输出、依赖目录、系统文件都排除掉。比如 Python 项目至少要忽略__pycache__/和.venv/Node 项目至少要忽略node_modules/VS Code 项目忽略.vscode/如果你不想把个人配置提交上去。git commit时如果编辑器配置有问题可能卡在 Vim 界面。前面配置了默认编辑器的话则不会遇到。万一已经卡住了按Esc输入:wq回车保存退出即可。7.2 关联远端并推送如果代码托管平台上已经建好了空仓库它会给你一个远程地址比如git remote add origin gitgithub.com:用户名/仓库名.git然后把本地代码推上去git branch -M main git push -u origin main这里做了一个操作把本地分支名统一改成main这是当前平台的默认习惯避免本地叫master、远端叫main的混乱。-u参数设置了本地分支与远端分支的跟踪关系之后直接敲git push就能推送。如果这一步提示 SSH 连接失败回到第 4 节的排查表格去检查。如果提示“远端已经存在同名仓库但内容不同”说明远端不是空的可以加--force强制覆盖但确认这是你想要的别在团队共享仓库上用--force。7.3 拉取、分支与冲突解决日常开发中你还需要定期拉取远端更新git pull如果要开一个新功能分支git checkout -b feature/login改完提交后推送到远端git push -u origin feature/login多人协作时git pull可能报冲突。冲突文件里会出现类似这样的标记 HEAD 这是你本地的内容 这是远端的内容 origin/main你需要手动编辑文件把冲突标记删掉保留最终想要的版本然后git add该文件再提交。很多人第一次看到这个标记会慌其实它只是 Git 在问你“两个版本要我留哪个”。8. 写在最后的个人经验这套流程我在 Windows 11 上至少完整走了几十遍帮同事排查过的更是不计其数。有几点体会想单独说一下。第一不要一上来就抄各种“高端配置”。Git 的默认配置对绝大多数人来说已经够用你先跑通流程再去按需优化这样出了问题也能知道自己改了什么。第二SSH 密钥一旦生成备份私钥时一定要加密压缩。我见过有人把私钥文件直接放在私人网盘里虽然方便但风险不低。如果必须备份建议用带口令的压缩包并存到安全的密码管理器里。第三遇到 Git 报错时读报错信息比搜索更重要。Git 的报错提示已经很友好大多数情况下它会直接告诉你是凭据问题、网络问题还是文件权限问题。很多人一看到满屏英文就复制去搜索反而错过了最直接的答案。第四如果你在 Windows 上还是觉得 Git 的命令行交互不够顺可以考虑给 PowerShell 装 posh-git 插件它会给你显示当前分支、未提交改动等状态视觉上更像一个增强版的终端提示符。不过这些都是锦上添花的事核心的安装、配置、SSH 链路只要按这篇文章走一遍基本能覆盖你日常 90% 的需求。剩下的问题等你真正遇到了再回来翻排查表格往往能找到答案。