🚫 一个项目 ≠ 多个 Git 仓库
- 在同一个项目中,不应该存在多个 Git 仓库。
- Git 是用来统一管理代码版本的,多个仓库会带来混乱,不利于协作和维护。
- 正确做法:整个项目只初始化一个仓库,用分支(branch)来管理不同功能或版本。
🛠️ 初始化 Git 仓库
-
在开发目录中执行:
git init -
此时会生成一个隐藏目录
.git,这就是你的本地代码仓库。 -
默认会创建
master分支(现在新版本 Git 默认可能是main)。 -
Git 的核心能力:管理文件的不同版本,特别适合大型项目和多人协作场景。
🔍 git status —— 你的仓库“体检报告” 🩺
-
这是最基础也最重要的命令之一!
-
在做任何操作前,建议先运行:
git status -
它能告诉你:
- 哪些文件尚未提交(不在仓库中)
- 哪些是未跟踪的文件(既不在仓库,也不在暂存区)
💡 小贴士:养成“先 status,再操作”的好习惯!
➕ git add —— 把修改放进“暂存区” 📦
-
示例:
git add readme.txt -
这一步将文件的修改加入暂存区(stage) ,准备下一次提交。
-
暂存区就像“购物车”,你可以选择性地添加要提交的内容。
✅ git commit —— 正式保存版本 🗂️
-
提交命令:
git commit -m "wrote a readme file" -
提交到当前分支(如
master),生成一个唯一的 SHA 哈希 ID(如a1b2c3d...)。 -
为什么用哈希 ID 而不是自增数字?
- 多人协作时,自增 ID 容易冲突 ❌
- 哈希 ID 全局唯一 ✅,由内容生成,天然防篡改
📌 提交信息要清晰表达功能或改动目的,方便日后回溯!
- 提交的是文件的修改内容,Git 会生成该文件的新版本。
- 输出示例:
2 insertions(+)表示新增了 2 行代码。
🔎 git diff —— 查看差异 👀
-
在重大提交前,先运行:
git diff -
它会显示工作区 vs 暂存区的代码差异。
-
好习惯:先 diff,再 add/commit,避免误提交!
🧹 “干净的仓库”是什么?
-
当
git status显示 “nothing to commit, working tree clean” 时,说明:- 所有文件都已提交或忽略
- 没有未跟踪的文件
- 仓库处于“干净”状态 ✅
🔁 版本回退:穿越时空 ⏪
-
查看提交记录:
git log --oneline # 输出示例:36803fa (HEAD -> master) append GPLHEAD指针:指向当前分支的最新提交- 可通过移动
HEAD实现“时间旅行”
-
回退命令:
git reset --hard HEAD^ # 回退 1 个版本 git reset --hard HEAD~2 # 回退 2 个版本 git reset --hard a1b2c3d # 回退到指定 commit ID⚠️
--hard会丢弃工作区和暂存区的所有修改,慎用!
🧯 撤销工作区修改:git checkout --
-
如果你在
readme.txt中做了错误修改,想完全丢弃:git checkout -- readme.txt -
这会将文件恢复到最近一次 commit 的状态。
-
注意:未 add 的修改会被永久删除,无法恢复!
🧠 Git 三大区域总结
| 区域 | 作用 |
|---|---|
| 工作区(Working Directory) | 你正在编辑的文件 |
| 暂存区(Staging Area) | git add 后的修改暂存地 |
| 仓库(Repository) | git commit 后的永久版本存储 |
🌈 小结
Git 是程序员的“时光机”⏳ + “协作神器”🤝。
掌握 status、add、commit、diff、reset、checkout 这几个核心命令,就迈出了版本控制的第一步!