Git 闯关手记:从 GitHub 登录到烧录回主分支(IDE 用户避坑指南)

本文记录我在用 VSCode / IDE 做嵌入式项目时,从零接触 Git、GitHub 到版本切换、烧录的完整踩坑过程。按「场景 → 原因 → 解法」整理,方便同样用 IDE 的同学对照。


一句话概括

GitHub 登录与上传 起步,搞懂 仓库根目录、.git、文件颜色状态、提交与 Vim,再到 签出 / 分支 / 回退提交,最后补上 IDE 显示延迟切回 main 前要先 git restore 的嵌入式工作流——核心是把 Git 的「文件状态」和编辑器的「界面显示」分开理解。

目录

Git 闯关手记:从 GitHub 登录到烧录回主分支(IDE 用户避坑指南)

一句话概括

一、入门与仓库结构

二、VSCode 里的「绿色」不等于报错

三、提交与 Vim(高频卡点)

四、签出、分支与回到历史版本

五、IDE 延迟:VSCode 变了,别的 IDE 没变?

六、嵌入式烧录:切版本后如何回到 main

七、自己总结的,仅供参考

八、完整问题对照表(速查)

写在最后



一、入门与仓库结构

场景 遇到的问题 本质原因 解决思路
GitHub 登录 登不进去,提示需要验证 GitHub 开启了双重验证 2FA 用腾讯身份验证器完成登录验证
GitHub 上传代码 不知道怎么把代码传到 GitHub 不熟悉网页上传和命令行上传的区别 网页端可 Add file;命令行:git addgit commitgit push
新建 code 文件夹 想把项目放进统一的代码文件夹 本地文件夹和 Git 仓库路径关系不清楚 .git 的目录才是 Git 仓库
去掉 Git 仓库 想把某文件夹里的 Git 去掉 存在隐藏的 .git 文件夹 删除 .git 后,该目录不再受 Git 管理

二、VSCode 里的「绿色」不等于报错

场景 遇到的问题 本质原因 解决思路
VSCode 文件变绿 文件全部变成绿色 Git 认为是「新文件 / 未跟踪文件」 绿色不是错误,只是 Git 状态提示
已提交但还是绿色 已经 commit,界面仍发绿 打开的目录不是仓库根,或状态未刷新 正确的项目根目录打开 VSCode,必要时刷新
打开路径问题 不是在 code 里打开 VSCode VSCode 识别的 Git 范围与打开文件夹有关 直接打开 Git 仓库根目录

三、提交与 Vim(高频卡点)

场景 遇到的问题 本质原因 解决思路
提交时进入 Vim git commit 突然进入黑色编辑界面 Git 默认用 Vim 写提交说明 i 编辑 → Esc → 输入 :wq 保存退出
Vim 中误操作 按了 d 后界面变化,不知道怎么办 Vim 是模式编辑器,按键不是普通输入 不熟 Vim 时用:git commit -m "提交说明"
Claude Code 提示 不知道提示是否代表编译失败 工具提示和 Git 状态容易混在一起 很多提示只是「是否执行 / 是否改文件」,不一定代表编译错误

推荐:日常提交直接用 -m,少进 Vim:

git commit -m "修复某某问题"

四、签出、分支与回到历史版本

场景 遇到的问题 本质原因 解决思路
点击「签出」 更改不能保存 / 状态变了 Checkout 会切换工作区到某分支或某次提交 签出不是普通打开文件,是切换版本状态
想回到某次提交 想回到某次提交且不要后面改动 需区分「临时查看」和「彻底回退」 临时:git checkout <commit>;彻底:git reset --hard <commit>(慎用)
回到 initial commit 想回到最初状态烧录试一下 往往只需临时用旧版本 checkout 到 initial commit,烧完再切回 main
回到 main 后代码没回来 切回 main 后 IDE 里函数没显示 IDE / VSCode 缓存或索引未刷新 磁盘上已恢复,刷新 IDE 后显示会跟上
分支理解 不太理解 branch 分支概念比较抽象 可理解为游戏支线:在某次提交上继续改,不挡主干
checkout 和 switch 不清楚两者区别 老命令与新命令功能重叠 switch 偏切分支;checkout 还能切某次提交 / 单文件状态
嵌入式 checkout 后能否烧录 担心旧版本能不能编译烧录 旧提交是否包含完整工程与配置 旧提交里工程文件完整即可编译、烧录

分支类比main 是主线任务;branch 是在某次存档(commit)上开的支线,改坏了也不一定要毁主线。

命令对照

# 临时查看某次提交(看完后切回 main)
git checkout <commit-hash>
git switch main

# 专用于切分支(更直观)
git switch main
git switch 某分支名

五、IDE 延迟:VSCode 变了,别的 IDE 没变?

我主要用 IDE 做嵌入式。当 checkout 到某次历史提交时:

  • VSCode 里的文件已经变了;
  • 另一套 IDE 里看起来还是旧的。

这不是 Git 坏了,而是 IDE 索引 / 缓存有延迟,需要手动刷新或重新打开工程。文件夹里的内容其实已经对上了。


这里明显缺少了spwm文件,refresh一下就好了


六、嵌入式烧录:切版本后如何回到 main

弄清 IDE 延迟之后,我总结了一套切换版本再回主分支的流程:

  1. 先签出到目标提交(例如 initial commit),编译、烧录验证;
  2. 烧录往往会重新编译,生成 Debug 等目录里的文件;
  3. Git 会认为工作区被修改,不能直接 git switch main
  4. 先丢弃这些编译产物带来的改动,再切回主分支:
git restore Debug/
git switch main

若还有其他被改动的路径,可对应用 git restore <路径>git status 查看后再处理。


七、自己总结的,仅供参考

看颜色   → 想 Git 状态,别想成编译报错
开文件夹 → 对准含 .git 的仓库根
写提交   → 不熟 Vim 就用 git commit -m "说明"
玩历史   → 临时看用 checkout,真删历史用 reset --hard(慎用)
切分支   → 先清编译产物改动(restore),再 switch main
对不上   → 先信磁盘里的文件,再刷新 IDE

八、完整问题对照表(速查)

时间/场景 遇到的问题 本质原因 解决思路
GitHub 登录 登不进去,要验证 2FA 身份验证器完成验证
GitHub 上传 不知道怎么传 不熟悉两种上传方式 网页 Add file 或 add/commit/push
新建 code 文件夹 想统一放项目 不懂仓库路径 .git 即仓库
去掉 Git 仓库 想去掉 Git 有隐藏 .git 删除 .git
VSCode 变绿 文件全绿 未跟踪文件 绿色是状态,不是错
提交后仍绿 已 commit 还绿 根目录错或未刷新 开对根目录并刷新
打开路径 没在 code 里开 识别范围与打开目录有关 开仓库根目录
git commit 进 Vim 黑屏编辑器 默认 Vim i / Esc / :wq-m
Vim 误按 d 界面乱了 模式编辑 commit -m
Claude Code 提示 不知是否编译错 提示与 Git 混在一起 分清是确认执行还是 Git 状态
点签出 不能保存 checkout 换版本状态 签出=切版本,不是普通打开
回到某次提交 不要后面改动 临时 vs 彻底回退 checkout 或 reset --hard
initial commit 烧录 想试最初代码 只需临时 checkout 后烧完切回 main
回 main 函数不见 IDE 没显示 缓存未刷新 刷新 IDE
branch 不懂分支 概念抽象 支线任务类比
checkout vs switch 分不清 命令重叠 switch 切分支;checkout 更泛
checkout 后烧录 能否运行 旧工程是否完整 提交完整即可编烧
IDE 不同步 VSCode 变 IDE 不变 IDE 延迟 刷新 / 重开工程
回 main 被拦 switch 失败 Debug 等被改 git restore Debug/ 再 switch

写在最后

Git 和 IDE 是两套系统:Git 管磁盘上的版本IDE 管你看到的界面。绿色、签出、回 main 被拦,多半是在对齐这两层;嵌入式再加一层「编译 / 烧录会改 Debug 目录」,回主分支前记得 restore

如果你也是 IDE + 嵌入式 + 刚学 Git,希望这份手记能少踩几个坑。欢迎评论区补充你遇到的情况。


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐