ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

VS Code+Git+Gitee 三件套配置实战指南

VS Code+Git+Gitee 三件套配置实战指南 1. 这不是“点几下就上传”的幻觉而是你真正掌控代码生命周期的第一步很多人打开 VS Code看到左下角那个小地球图标或者源代码管理面板里一堆文件名就以为“我已经会用 Git 了”。直到某天想把刚写完的 Node.js 小工具推到 Gitee执行git push却卡在Permission denied (publickey)或者推送成功后刷新 Gitee 页面发现仓库空空如也——连 README.md 都没生成。这根本不是操作步骤记错了而是从一开始就没搞清 VS Code、Git 和 Gitee 三者之间真实的协作关系VS Code 是你的编辑器界面Git 是本地运行的版本控制引擎Gitee 只是一个远程服务器地址。它们之间没有魔法绑定只有明确的配置链路。我第一次在公司新配的 Windows 电脑上部署项目时就因为跳过了 SSH 密钥的指纹验证环节导致git clone一直卡在The authenticity of host gitee.com cant be established...这一行反复 CtrlC 重试了七次才意识到要手动输入yes。这篇教程不教你怎么“复制粘贴命令”而是带你亲手把这条链路一环一环拧紧从 Git 的底层协议选择HTTPS 还是 SSH到 VS Code 内置终端与系统终端的环境变量差异再到 Gitee 仓库初始化时那个被多数人忽略的.gitignore模板预设。你会明白为什么git add .后git status显示的文件列表和你在资源管理器里看到的完全不一样也会清楚 VS Code 左侧源代码管理面板里的“暂存”按钮本质上只是帮你执行了一条git add -A命令的图形化快捷方式。这不是保姆级这是“扳手级”——给你一把能拧动每个螺丝的工具而不是递给你一个已经组装好的遥控器。2. 环境准备三个独立组件的安装与验证缺一不可很多教程把“安装 Git”一笔带过但实际踩坑最多的地方恰恰在这里。VS Code 自身不包含 Git 引擎它只是调用你系统里已安装的 Git 可执行文件。如果你用的是 Windows必须确认安装的是官方 Git for Windowshttps://git-scm.com/download/win而不是通过 Chocolatey 或 Scoop 安装的精简版——后者默认不包含git-bash.exe而 VS Code 的集成终端严重依赖这个 shell 环境来解析 Git 命令。我曾帮一位前端同事排查问题他用 Scoop 装的 Git 在命令行里git --version正常返回但在 VS Code 终端里执行git status却报错bash: git: command not found根源就是 Scoop 安装路径未加入系统 PATH而 VS Code 启动时读取的是启动它的那个 CMD 窗口的环境变量快照。2.1 Git 的安装与核心配置验证下载 Git for Windows 后安装向导里有三个关键选项必须勾选Use Git from Git Bash only绝对不要选这个。它会让 Git 只在 Git Bash 里可用VS Code 集成终端无法调用。Use Git from Windows Command Prompt必须勾选。这会把 Git 的 bin 目录如C:\Program Files\Git\bin加入系统 PATH。Checkout Windows-style, commit Unix-style line endings推荐勾选。解决跨平台换行符CRLF vs LF导致的文件变更误报。安装完成后不要直接打开 VS Code先做两件事打开 Windows 自带的 CMD 或 PowerShell输入git --version确认返回类似git version 2.43.0.windows.1输入where gitWindows或which gitmacOS/Linux确认返回路径指向你刚安装的 Git 目录而非其他位置比如旧版本残留。提示如果where git返回多个路径说明系统存在多个 Git 安装。必须卸载旧版本或手动修改系统 PATH确保C:\Program Files\Git\bin排在最前面。VS Code 启动时只读取 PATH 中第一个匹配项。2.2 VS Code 的 Git 路径显式配置即使where git返回正确路径VS Code 仍可能找不到 Git。这是因为 VS Code 会尝试从多个位置探测 Git 可执行文件而探测顺序可能导致它优先找到错误的路径。最稳妥的方式是强制指定在 VS Code 中按Ctrl ,打开设置在搜索框输入git.path点击Edit in settings.json右上角铅笔图标在settings.json文件中添加一行git.path: C:\\Program Files\\Git\\bin\\git.exe注意Windows 路径中的反斜杠\必须写成双反斜杠\\否则 JSON 解析会失败。macOS/Linux 用户则填写/usr/local/bin/git或which git返回的路径。注意配置完后必须重启 VS Code。VS Code 不会在运行时动态重载git.path设置。我见过太多人改完设置不重启然后反复检查 Git 是否安装成功浪费半小时。2.3 Node.js 的安装与关联性澄清关键词里出现了 Node.js但这里必须划清界限Node.js 与将代码上传到 Gitee 完全无关。它只在你项目本身需要 Node 运行时如 Vue/React 前端项目、Express 后端时才起作用。VS Code 上传代码到 Gitee 的过程只依赖 Git不依赖 Node.js。之所以网络热词里频繁出现 Node.js是因为大量用户是在开发 Node.js 项目时才首次接触 Git 和 Gitee。如果你的项目是纯 Python、C 或 Markdown 文档完全可以跳过 Node.js 安装。但如果你确实需要它请务必从官网 https://nodejs.org 下载 LTS 版本当前为 20.x安装时勾选 “Add to PATH” 选项。验证方式CMD 中执行node -v和npm -v两者都应正常返回版本号。3. 仓库初始化本地 Git 仓库与远程 Gitee 仓库的双向绑定“把代码上传到 Gitee”这个动作本质是建立本地 Git 仓库与远程 Gitee 仓库之间的数据同步通道。这个通道不是单向的“上传”而是双向的“推送push”与“拉取pull”。很多人失败的根本原因在于试图跳过“本地初始化”这一步直接在 VS Code 里点“发布到 GitHub/Gitee”按钮——这个按钮在没有本地 Git 仓库时是灰色的而教程却没告诉你如何让它变亮。3.1 在 VS Code 中创建并初始化本地 Git 仓库假设你的项目文件夹路径是D:\my-project里面已有index.js、package.json等文件不要在资源管理器里右键点击文件夹选择“Git Bash Here”正确做法在 VS Code 中按CtrlShiftP打开命令面板输入Git: Initialize Repository回车VS Code 会弹出提示框让你选择文件夹。务必选择D:\my-project这个根目录而不是它的父目录。选错会导致.git文件夹建在错误位置后续所有 Git 命令都失效初始化成功后VS Code 左下角状态栏会出现分支名如main左侧活动栏的源代码管理图标^上会出现数字1表示有 1 个未暂存的更改。此时VS Code 并不知道你要推送到哪个远程地址。它只知道本地有一个空的 Git 仓库里面没有任何提交记录commit。.git文件夹已创建但里面只有基础配置没有历史快照。3.2 在 Gitee 上创建空白远程仓库访问 https://gitee.com登录后点击右上角-新建仓库仓库名称必须与本地文件夹名一致如my-project便于后期管理路径保持默认即用户名/仓库名不要自定义描述可填可不填是否开源根据项目性质选择.gitignore这是最关键的一步下拉菜单中选择对应模板如 Node.js 项目选NodePython 项目选Python。这个模板会自动生成.gitignore文件告诉 Git 哪些文件不该纳入版本控制如node_modules/、__pycache__/、.DS_Store。如果选错或留空后续git add .会把数以万计的node_modules文件全部加进去导致推送失败或仓库臃肿许可证初学者可选MIT简单明了README强烈建议勾选。它会为你生成一个初始的README.md文件并创建第一次提交commit。这意味着远程仓库不再是“空”的它已经有了一个main分支和一次提交记录。提示Gitee 创建仓库后页面会显示一个 HTTPS 或 SSH 地址形如https://gitee.com/username/my-project.git或gitgitee.com:username/my-project.git。先别急着复制继续看下一节。3.3 将本地仓库与远程仓库“焊接”起来现在本地有空仓库远程有带 README 的仓库二者尚未连接。你需要执行git remote add origin 远程地址命令在 VS Code 中按Ctrl反引号打开集成终端确认当前路径是D:\my-project终端提示符应显示此路径执行命令git remote add origin https://gitee.com/your-username/my-project.git将your-username替换为你自己的 Gitee 用户名。这里必须用 HTTPS 地址而不是 SSH 地址。原因见下一节。执行后VS Code 左下角状态栏的分支名旁边会出现一个向上箭头图标↑表示本地分支已关联远程分支可以推送了。此时git remote -v命令会显示origin对应的 URL。注意origin是远程仓库的别名不是固定名称。你可以叫它upstream或gitee但origin是行业惯例强烈建议遵守。一个本地仓库可以关联多个远程仓库如同时关联 Gitee 和 GitHub但origin通常指主远程仓库。4. 认证方式抉择HTTPS 与 SSH 的实战权衡与密钥生成Gitee 支持两种认证方式将你的代码推送到远程仓库HTTPS 和 SSH。网络热词里频繁出现的gitee配置密钥指的就是 SSH 方式。但绝大多数新手应该首选 HTTPS原因很现实它不需要额外配置且密码或个人访问令牌 PAT可随时在 Gitee 后台重置安全性可控。而 SSH 方式一旦私钥泄露后果更严重且配置稍复杂。4.1 为什么 HTTPS 是新手最优解HTTPS 认证流程极其简单第一次git push时Git 会弹出一个图形化窗口要求你输入 Gitee 账号和密码但注意这里不能输入你的 Gitee 登录密码由于 Gitee 已启用双重验证2FA直接输密码会失败。你必须使用Personal Access Token (PAT)在 Gitee 个人设置 -安全设置-访问令牌中点击生成新令牌勾选repo权限仅此一项即可设置有效期建议 30 天点击生成复制生成的长字符串形如8f3a5b2c1d...这就是你的“密码”。下次git push弹窗时用户名填你的 Gitee 用户名密码栏粘贴这个 PAT 字符串。Git 会缓存这个凭证后续推送无需重复输入。提示VS Code 默认使用 Windows 凭据管理器Credential Manager存储 HTTPS 凭证。如果推送失败可打开 Windows 设置 -账户-登录选项-Windows 凭据找到git:https://gitee.com条目编辑并更新密码为新的 PAT。4.2 SSH 方式的完整配置流程进阶如果你坚持使用 SSH例如公司内网要求、或需要免密推送请严格按以下步骤操作任何一步出错都会导致Permission denied生成密钥对在 VS Code 终端中执行ssh-keygen -t ed25519 -C your_emailexample.com全程按回车接受默认路径C:\Users\YourName\.ssh\id_ed25519和空密码不推荐设密码否则每次推送都要输 2.启动 ssh-agent 并添加密钥eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519将公钥内容复制到剪贴板cat ~/.ssh/id_ed25519.pub | clip在 Gitee 添加公钥Gitee 个人设置 -SSH 公钥-添加公钥粘贴刚才复制的内容标题随意如VSCode-Windows测试连接ssh -T gitgitee.com如果返回Welcome to Gitee.com, your_name!说明配置成功 6.修改远程地址为 SSH 格式git remote set-url origin gitgitee.com:your-username/my-project.git注意SSH 方式下git remote set-url命令中的 URL 格式是gitgitee.com:username/repo.git冒号:后面是用户名/仓库名不是斜杠/。这是 SSH 协议的固定语法写成/会导致连接失败。5. 从零提交VS Code 图形化操作与底层 Git 命令的映射关系现在本地仓库已初始化远程仓库已创建并关联认证方式已配置。但 VS Code 左侧源代码管理面板里文件名前的图标仍是灰色的?表示 Git 尚未跟踪这些文件。真正的“上传”动作始于一次有效的git commit。而 VS Code 的图形界面只是把复杂的 Git 命令封装成了几个按钮。5.1 理解“暂存区Staging Area”这个核心概念Git 的工作流是三层结构工作区Workspace→ 暂存区Staging→ 本地仓库Repository。VS Code 的源代码管理面板清晰地体现了这一点未暂存的更改Unstaged Changes列表中显示为灰色?或MModified的文件它们在工作区但 Git 还没决定要不要把它们纳入下一次提交暂存的更改Staged Changes点击文件名左侧的号或右键选择Stage Change文件就会移到上方的“暂存的更改”区域图标变为绿色AAdded或M提交Commit在“暂存的更改”区域顶部的输入框里写入提交信息如feat: init project structure按CtrlEnterVS Code 就会执行git commit -m feat: init project structure。提示git add .命令的作用就是把工作区所有已修改且未被 .gitignore 忽略的文件一次性加入暂存区。VS Code 界面里的号就是图形化的git add。理解这一点你就不会困惑为什么点了“暂存”后文件才变绿。5.2 执行首次提交与推送的完整链路假设你已按 3.1 节初始化了本地仓库且 Gitee 仓库已创建含 README在 VS Code 终端中执行git pull origin main --allow-unrelated-histories。这一步至关重要因为 Gitee 仓库已有 README 的第一次提交而你的本地仓库是空的两者历史不相关。直接git push会被拒绝。git pull会把远程的 README 提交拉取下来并自动合并merge到你的本地main分支此时git status会显示Your branch is up to date with origin/main且工作区干净现在把你自己的代码文件如index.js加入暂存区在源代码管理面板找到index.js点击其左侧的号在提交信息框输入chore: add initial code files按CtrlEnter提交成功后VS Code 左下角状态栏的↑图标会变成↑1表示有 1 个待推送的提交点击这个↑1图标或按CtrlShiftP输入Git: Push回车。VS Code 会执行git push origin main如果是 HTTPS 方式会弹出登录窗口输入用户名和 PAT如果是 SSH 方式则静默推送。推送成功后刷新 Gitee 仓库页面你的index.js文件就会出现在文件列表中。5.3 VS Code 中那些“隐藏”的 Git 命令除了基本的暂存和提交VS Code 还封装了许多实用功能它们背后对应的 Git 命令值得了解撤销更改Discard Changes右键文件 -Discard Changes等价于git checkout -- file丢弃工作区的修改撤回暂存Unstage Changes在“暂存的更改”区域右键文件 -Unstage Change等价于git reset HEAD file把文件从暂存区移回工作区查看差异Diff点击文件名右侧会打开对比视图显示你修改了哪些行等价于git diff file切换分支Branch左下角分支名点击可创建新分支或切换现有分支等价于git checkout -b new-branch或git checkout main。注意VS Code 的“撤销更改”功能非常危险。它会永久删除你未保存的修改。我曾因误点Discard Changes而丢失了 2 小时写的算法逻辑幸好 VS Code 有本地历史File -Open Timeline可以从Local History中恢复。但最好的习惯是任何重要修改先git add暂存再git commit提交最后再git push。这样即使误操作也能通过git reflog找回。6. 常见故障排查从fatal: not a git repository到Updates were rejected当推送失败时错误信息就是你的诊断指南。以下是我在真实项目中遇到的最高频的五个错误及其根治方案按出现概率排序6.1fatal: not a git repository (or any of the parent directories): .git现象在 VS Code 终端执行git status返回此错误。根因当前终端路径不在 Git 仓库根目录内。VS Code 的集成终端默认打开在工作区根目录但如果工作区是多文件夹项目或你手动cd过路径就可能错。解决方案在 VS Code 中按CtrlShiftP输入Terminal: Create New Terminal创建一个新终端它会自动进入正确的根目录或手动cd到你的项目文件夹再执行git status终极验证执行ls -lamacOS/Linux或dir /ahWindows确认能看到.git文件夹。6.2error: failed to push some refs to https://gitee.com/...现象git push后报此错后面跟着! [rejected] main - main (non-fast-forward)。根因远程仓库有你本地没有的提交比如别人推送了或你之前在网页端编辑了 READMEGit 拒绝非快进式推送防止覆盖他人工作。解决方案执行git pull origin main --rebase。--rebase参数会把你本地的提交“重放”到远程最新提交之后避免产生多余的 merge 提交如果pull后出现冲突ConflictVS Code 会高亮显示冲突文件。在冲突标记 HEAD和之间手动编辑保留你需要的代码删除标记行保存文件后在源代码管理面板点击Resolve Conflict然后git add冲突文件再git rebase --continue最后git push。6.3Permission denied (publickey)现象使用 SSH 方式推送时终端输出此错误。根因SSH 密钥未正确加载或 Gitee 未添加公钥。排查链路执行ssh -T gitgitee.com如果返回Permission denied说明密钥未生效执行ssh-add -l检查密钥是否已添加到 agent。如果返回The agent has no identities说明ssh-add没执行成功执行cat ~/.ssh/id_ed25519.pub确认公钥文件存在且内容可读登录 Gitee检查SSH 公钥列表里是否有你刚添加的那一条且内容与cat命令输出完全一致包括末尾的邮箱如果以上都正确尝试重启ssh-agenteval $(ssh-agent -s)然后ssh-add ~/.ssh/id_ed25519。6.4src refspec main does not match any现象git push时返回此错。根因本地分支名不是main而你推送时没指定分支名。Gitee 新建仓库默认分支是main但旧版 Git 初始化的本地仓库默认分支可能是master。解决方案执行git branch查看当前分支名如果是master执行git branch -M main将master分支重命名为main然后git push -u origin main-u参数会设置上游分支后续只需git push。6.5 VS Code 源代码管理面板不显示文件或状态异常现象文件修改了但 VS Code 左侧看不到变化或状态栏分支名消失。根因VS Code 的 Git 扩展未启用或工作区配置错误。解决方案按CtrlShiftX打开扩展面板搜索Git确认Git扩展由 Microsoft 发布已启用在 VS Code 设置中搜索git.enabled确保其值为true如果工作区是通过File - Add Folder to Workspace添加的确认添加的是项目根目录而不是其子目录最后按CtrlShiftP输入Developer: Reload Window强制重载 VS Code 窗口刷新 Git 状态。提示VS Code 的 Git 状态有时会“卡住”。一个快速重置方法是在源代码管理面板右上角点击...-Close Repository然后重新打开文件夹。这相当于重启 Git 扩展。7. 进阶实践让日常开发更高效、更安全的五个关键配置当你能稳定地把代码推送到 Gitee 后下一步是优化工作流。以下是我过去三年在十几个不同团队项目中沉淀下来的、真正提升效率的配置它们不花哨但每天都在节省时间。7.1 配置全局.gitignore一劳永逸忽略系统文件每次新建项目都要手动添加.gitignore很麻烦。Git 支持全局忽略规则在 VS Code 终端执行git config --global core.excludesfile ~/.gitignore_global创建~/.gitignore_global文件Windows 是C:\Users\YourName\.gitignore_global写入# 系统文件 .DS_Store Thumbs.db desktop.ini # 编辑器 .vscode/ .idea/ *.swp *.swo # 构建产物 dist/ build/ out/以后所有新项目这些文件都会被自动忽略无需再单独配置。7.2 使用 VS Code 的“提交模板”统一团队规范强制团队成员写有意义的提交信息比写代码还难。VS Code 支持提交模板创建一个commit_template.txt文件内容如下# 请在下方填写本次提交的类型和描述必填 # 类型: feat | fix | docs | style | refactor | test | chore # 示例: feat: add user login function # type(scope): subject # |---- 50 chars ----| # 正文可选解释改动原因、影响范围 # |------------------- 72 chars ------------------------| # 关联 Issue可选如 #123在 VS Code 设置中搜索git.inputBox, 找到Git: Input Box点击Edit in settings.json添加git.inputBox: { template: ./commit_template.txt }每次提交时输入框会自动填充模板引导开发者按规范书写。7.3 启用 VS Code 的“自动暂存”告别忘记git add对于小修改每次都要手动点号很繁琐。VS Code 提供了“自动暂存”选项在设置中搜索git.autoRepositoryDetection确保为true搜索git.autoclean设为false避免误删最关键搜索git.enableSmartCommit勾选它。这样当你点击CtrlEnter提交时VS Code 会自动把所有已修改的文件加入暂存区无需手动git add。7.4 配置 Gitee Webhook实现代码推送后自动部署如果你的项目是静态网站可以利用 Gitee 的 Webhook 实现“推送即上线”在 Gitee 仓库设置 -Webhooks-添加 WebhookURL 填写你的服务器地址如http://your-server.com/deploy密钥Secret填一个随机字符串在服务器上编写一个简单的接收脚本Python/Node.js验证密钥后执行git pull这样每次git push服务器就会自动拉取最新代码并重启服务。7.5 定期清理本地 Git 历史释放磁盘空间Git 仓库会随着提交不断增大尤其是误提交了大文件如node_modules.zip后。清理命令# 查看仓库大小 git count-objects -vH # 删除所有引用的大文件需先安装 BFG Repo-Cleaner java -jar bfg.jar --delete-files *.zip my-project.git # 强制重写历史慎用 git gc --prunenow --aggressive提示git gc命令会压缩对象数据库通常能减少 30%-50% 的仓库体积。我管理的一个文档仓库执行后从 1.2GB 降到 480MB。8. 我的真实体会从“能用”到“用好”中间隔着对 Git 本质的理解写完这篇近六千字的实操指南我回想自己第一次在 VS Code 里把代码推到 Gitee 的场景花了整整一个下午反复重装 Git、生成密钥、修改远程 URL最后发现只是因为git remote add时少打了一个字母。那种挫败感至今记忆犹新。但正是那次折腾让我彻底明白了 Git 不是一个“上传工具”而是一个分布式版本控制系统。它的每一个命令add、commit、push、pull都是在操作一个有向无环图DAG上的节点。VS Code 的图形界面只是把这个图的局部视图友好地呈现出来。所以当你下次再看到 VS Code 左下角那个小小的分支名时请记住它不是一个装饰图标而是你本地 Git 仓库当前所处的“快照指针”。当你点击↑推送时VS Code 并不是在“上传文件”而是在把本地 DAG 的一部分同步到远程服务器的另一个 DAG 上。这种理解会让你在面对merge conflict、rebase、cherry-pick等高级操作时不再感到恐惧而是像在操作一张熟悉的城市地图。最后分享一个小技巧在 VS Code 中按CtrlShiftP输入Git: Show Git Output可以打开 Git 的详细日志面板。所有 VS Code 执行的 Git 命令以及它们的完整输出都会实时显示在这里。这是你理解 VS Code 如何与 Git 交互的“透视镜”。我解决过的 80% 的疑难杂症都是靠盯着这个面板里的错误信息逐字分析出来的。它比任何教程都可靠因为它是你自己的环境、你自己的命令、你自己的错误。
返回列表