作为新手而言,如何学习别人优秀的开源代码,如何提交自己的代码到开源社区,如何做到代码的版本控制。而今天通过这篇文章,让我们一起来学习吧!
Git 是一个分布式版本控制系统。简单说,它像一个「后悔药 + 时间机器」的组合,核心功能如下:
• 记录每次修改:谁、什么时候、改了什么。
• 随时回退:改坏了可以回到上一个正常版本
• 多人协作:各改各的,最后合并在一起
场景 | 普通文件管理 | Git 版本控制 |
|---|---|---|
改坏了 | 文件已保存,无法恢复 | git revert 一键回退 |
想看看上周改了啥 | 凭记忆 | git log 清清楚楚 |
想同时尝试两个方案 | 复制粘贴多个文件夹 | git branch 开分支 |
几台电脑同步代码 | U 盘拷来拷去 | git push/pull 同步 |
Git 是本地的版本管理工具,可自行安装。而Github是远程代码托管平台(像自己的 GitHub)。说白了一个是本地环境,仅自己看,一个是线上版本,可开源可私有。
总体流程: 你本地写完代码 → Git 管理版本 → 推送到 Gitea 备份和共享
Windows: 官网 https://git-scm.com 下载安装包,一路 Next

验证安装:
git --version
git config --global user.name "逍遥子大表哥"
git config --global user.email "你的邮箱@example.com"接下来我们需要将 D:\ADRUINO 中的项目提交到Github。
cd D:\ADRUINOgit init这会在当前目录生成一个 .git 隐藏文件夹,Git 用它来管理版本。
git checkout -b main🔔 注意: 新版的 Git 默认分支名叫
main,不是以前的master。
git add README.md # 只添加 README.md
# 或
git add . # 添加当前目录所有文件(除了 .gitignore 忽略的)git commit -m "first commit"双引号里写本次改动的描述,清晰明了即可。
先去 github 上新建一个空仓库,拿到仓库地址:
https://github.com/xiaoyoazi/Arduino.git然后关联到本地:
git remote add origin https://github.com/xiaoyoazi/Arduino.git
origin是远程仓库的默认名字,你可以改成任何名字,但大家都用origin所以最好保持一致。
git push -u origin main-u 表示第一次推送时建立关联,以后可以直接 git push。
情景: 推送项目提示错误:
git push origin master
# ❌ fatal: 'origin' does not appear to be a git repository原因: 你的远程仓库名不是默认的 origin,执行下面命令查看当前仓库名。
git remote -v
# 逍遥子 https://github.com/xiaoyoazi/Arduino.git (fetch)
# 逍遥子 https://github.com/xiaoyoazi/Arduino.git (push)解决方案: 改名或者用原名推送
# 方案一:用原名推送
git push 逍遥子 master
# 方案二:改成标准名字(推荐)
git remote rename 逍遥子 origin
git push origin master教训:git remote add 时名字别乱取,用 origin 最省心。
情景: 推送项目后,提示下面错:
git push origin master
# ❌ error: src refspec master does not match any原因: 本地的分支叫 main,不是 master。
git branch
# * main解决方案: 推正确的分支:
git push origin main或者把本地分支改名推:
git branch -M master # 把 main 改成 master
git push origin master教训: 推送前先用 git branch 看看本地到底叫什么分支名。
情景: 新建了仓库,想直接推送:
git push -u origin main
# ❌ error: failed to push some refs原因: 还没有任何 commit。Git 推的是提交记录,空仓库没有提交就没有分支。
正确顺序:
git init
git checkout -b main # 创建 main 分支
git add . # 添加文件
git commit -m "first commit" # 先提交
git remote add origin <地址> # 再关联远程
git push -u origin main # 最后推送# 1. 看看改了什么
git status
# 2. 添加修改
git add .
# 3. 提交
git commit -m "修复:文章页面XSS过滤"
# 4. 推送到Gitea
git push<类型>:<简短描述>
类型:
feat - 新功能
fix - 修复bug
docs - 文档修改
refactor - 重构代码
style - 格式调整(不影响功能)
举例:
fix: 修复登录页SQL注入漏洞
feat: 新增MQTT消息队列功能
docs: 更新README安装说明这是版本控制最大的价值——改坏了能回去。
git log --oneline
# abc1234 (HEAD -> main) 修复:文章页面XSS过滤
# def5678 新增:用户登录功能
# ghi9012 初始提交abc1234 是 commit ID(哈希值),每个提交的唯一标识。
# 撤销最近一次提交,但保留代码修改
git reset --soft HEAD~1
# 彻底回到上一版本(丢弃所有修改)
git reset --hard HEAD~1✅ 安全方案:git revert
# 撤销最近一次提交,生成一个新的反向提交
git revert HEAD
git push
# 撤销某次指定的提交(比如那个XSS修复)
git revert abc1234
git push优点: 不修改历史记录,多人协作时不会搞乱别人。
❌ 暴力方案:git reset + force push
git reset --hard HEAD~1
git push origin main --force⚠️ 慎用! 强制推送会改写远程历史,如果别人已经拉取了你的代码,他们的仓库会出问题。
场景 | 推荐方案 |
|---|---|
只有你自己在用这个仓库 | 随便,看心情 |
多人协作开发 | 必须用 git revert |
刚提交 5 分钟还没推远程 | git reset --soft HEAD~1 |
已经推远程了 | 用 git revert |
就想彻底删除某个提交的所有痕迹 | git reset --hard + --force |
git show abc1234git show --stat abc1234git checkout -- src/main.pygit reset HEAD src/main.py命令 | 作用 |
|---|---|
git init | 初始化仓库 |
git status | 查看当前状态 |
git add . | 添加所有修改 |
git commit -m "描述" | 提交修改 |
git push | 推送到远程 |
git pull | 拉取远程更新 |
git log --oneline | 查看提交历史 |
git branch | 查看分支 |
git checkout -b <分支名> | 创建并切换分支 |
git revert HEAD | 安全回退最近一次提交 |
git reset --soft HEAD~1 | 撤销提交,保留修改 |
git reset --hard HEAD~1 | 彻底回到上一版本 |
git remote -v | 查看远程仓库地址 |
git remote add origin <地址> | 关联远程仓库 |
更多精彩文章 欢迎关注我们