git虽然是一个基础得不能再基础的必备技能,一直使用vs code等IDE写代码的话,git操作基本都是鼠标点点就行了,但总该记得一些基础的操作吧,长时间不用总会生疏的,慢慢的估计都忘了怎么用了,还是记录一下吧。

🔍 什么是 Git?

Git 是一个分布式版本控制系统(DVCS),核心能力是:
  • 记录每一次代码变更(谁、何时、改了哪行)
  • 随时回退到任意历史版本(“昨天好好的,今天崩了?” → 一键还原)
  • 多人并行开发不打架(你改 UI,我改逻辑,最后安全合并)

🌰 极简类比

场景类比说明
不用 Git写论文只存 终稿.doc → 改崩了?只能重写
用 Git自动存 v1_初稿.mdv2_加结论.mdv3_导师批注版.md,随时对比/回滚

💡 关键区分:

  • Git = 本地管理工具(命令行程序)
  • GitHub / GitLab / Gitee = 远程托管平台(类似“代码网盘 + 协作中心”)

❓ 为什么要学 Git 基本操作?

痛点Git 如何解决你的收益
代码改崩不敢试git commit 生成安全快照 → 崩了就 git restore✅ 大胆实验,零心理负担
多人协作覆盖代码分支隔离开发 + 合并审查✅ 不再“你的删了我的”
面试/实习硬门槛99% 开发岗要求“熟悉 Git”✅ 简历过关基础项
开源项目参与Fork → 提 PR 是唯一路径✅ 从使用者变贡献者
个人项目混乱清晰提交历史 = 自动写文档✅ 一周后仍知“当时为啥这么改”
🐾 小蚂蚁视角:
Git 不是“高级技能”,而是现代编程的“呼吸方式”
——就像小蚂蚁不会问“为什么要搬东西”,因为不搬,就活不下去 🐜💨

🎯学习目标

掌握日常开发 90% 场景 所需git操作:
✅ 初始化仓库|✅ 提交变更|✅ 分支管理|✅ 推送/拉取|✅ 基础撤销


1️⃣ 初始化 & 配置(一次即可)

# 设置全局身份(提交记录归属)
git config --global user.name "你的名字"
git config --global user.email "your@email.com"

# 初始化本地仓库(在项目根目录执行)
git init

⚠️ 技术提醒:

  • 不同机器需单独配置
  • 邮箱建议用 GitHub 注册邮箱

2️⃣ 日常工作流(核心四步)

# 📌 第一步:查看改动(随时可用!强烈建议先看状态)
git status

# 📌 第二步:暂存改动(把“想提交的”打包)
git add <文件名>        # 添加单个文件
git add .               # 添加所有改动(谨慎!建议明确指定)

# 📌 第三步:提交到本地仓库(生成版本快照)
git commit -m "feat: 添加登录按钮"   # 提交信息规范:类型: 简洁描述

# 📌 第四步:查看历史(确认提交成功)
git log --oneline -5    # 显示最近5条,简洁版

✨ 提交信息规范建议(非强制但推荐):

  • feat: 新功能|fix: 修复 bug|docs: 文档|chore: 构建/工具
  • 例:fix: 修复密码输入框溢出chore: 添加 .gitignore

3️⃣ 连接远程仓库(如 GitHub)

场景一:从零开始(本地新建项目 → 推到远程)

# 关联远程仓库(首次)
git remote add origin https://github.com/你的用户名/仓库名.git

# 推送本地 main 分支到远程(首次需 -u)
git push -u origin main

# 后续推送(-u 记住关联后,只需)
git push

⚠️ 常见陷阱:

  • 若远程已有 main(比如用 GitHub 模板创建),本地需先 git pull 再推
  • 若提示 fatal: not a git repository → 检查是否在项目根目录

场景二:参与已有项目(克隆远程仓库到本地)← 新增!

# 克隆整个仓库(含历史 + 分支)
git clone https://github.com/用户名/仓库名.git

# 进入项目目录(自动创建同名文件夹)
cd 仓库名

# 后续直接开发 → commit → push

git clone 本质做了 4 件事:

  1. git init
  2. git remote add origin <url>
  3. git pull origin main(或默认分支)
  4. 切换到默认分支(如 main

⚠️ 常见陷阱:

  • 若远程已有 main(比如用 GitHub 模板创建),本地不要 git init + push,应直接 clone
  • 若提示 fatal: not a git repository → 检查是否在项目根目录
  • 克隆后 git remote -v 确认远程地址正确

4️⃣ 分支管理(协作基石)

# 查看分支
git branch              # 本地分支(* 表示当前)

# 创建并切换分支(推荐写法)
git switch -c dev       # 创建 dev 并切换(Git ≥2.23)

# 或传统写法
git checkout -b dev

# 合并分支(如:将 dev 合入 main)
git switch main         # 先切换到目标分支
git merge dev           # 合并

# 删除已合并分支
git branch -d dev       # 安全删除(未合并会报错)

💡 最佳实践:

  • main 保持可部署状态
  • 功能开发 → feature/xxx|修复 bug → fix/xxx

5️⃣ 撤销操作(救命三件套)

场景命令说明
改错文件,还没 addgit restore file.txt丢弃工作区修改(还原为上次 commit 状态)
add 错了,想撤回暂存git restore --staged file.txt从暂存区移出,但保留本地修改
commit 描述写错/漏文件git commit --amend修改上一次提交(可补 add + 改 message)
❗ 重要:以上均为 本地操作,未推送到远程时安全使用
若已 push,修改历史需 git push --force(慎用!影响协作)

6️⃣ 常用辅助命令

# 查看改动细节(对比工作区 vs 暂存区)
git diff

# 查看暂存区 vs 最近一次 commit
git diff --cached

# 忽略文件(创建 .gitignore)
echo ".env" >> .gitignore
echo "node_modules/" >> .gitignore
echo "__pycache__/" >> .gitignore

# 查看远程仓库地址
git remote -v

🔒 安全 & 习惯建议

风险点建议
敏感信息泄露永远把 .env、密钥、日志加入 .gitignore
路径/换行问题Windows 用户建议:git config --global core.autocrlf true
提交污染提交前 git status + git diff 双检查
远程冲突git pull 前先 commitstash 本地改动