一、Git 核心基础概念
1. 仓库管理原则
- 同一项目禁止创建多个 Git 仓库:多仓库会导致代码版本混乱、协作冲突,需保证一个项目对应一个仓库,集中管理代码版本。
-
仓库初始化流程:
-
先创建开发目录(存放项目代码的文件夹);
-
执行 git init 命令初始化仓库,会自动生成隐藏的 .git 目录(核心仓库文件,存储版本信息、分支数据等);
-
初始化后默认创建 master 分支(早期默认主分支,现在部分工具默认 main,功能一致)。
-
-
适用场景:大型项目开发、多人协作开发(核心价值:追踪文件修改、管理版本迭代、解决协作冲突)。
2. Git 工作区域核心逻辑
- 核心区域:工作区(本地编写代码的目录)→ 暂存区(临时存储待提交的修改)→ 仓库(.git 目录,永久存储版本记录);
- 所有操作围绕 “修改→暂存→提交” 的流程,未暂存的修改仅存在工作区,未提交的修改仅存在暂存区,提交后才会形成正式版本。
二、核心命令详解(必掌握)
1. git status:仓库状态查询(高频刚需)
- 作用:查看当前工作区、暂存区与仓库的差异状态,任何操作前建议先执行该命令,避免误操作;
- 常见状态说明:
- “尚无提交”:仓库刚初始化,未创建任何版本;
- “未跟踪的文件”:文件新建后未添加到暂存区,Git 未记录该文件;
- “已暂存但未提交”:文件通过 git add 加入暂存区,等待提交到仓库;
- “工作区有修改但未暂存”:文件已被跟踪,但修改后未执行 git add。
2. git add <文件名>:添加修改到暂存区
- 作用:将工作区的修改(新建文件、修改文件、删除文件)添加到暂存区,标记为 “待提交”;
- 示例:git add readme.txt(添加单个文件)、git add .(添加当前目录下所有修改);
- 注意:暂存区是 “过渡区域”,可多次执行 git add 累积多个修改后再提交。
3. git commit -m "提交说明":提交暂存区到仓库
- 作用:将暂存区的所有修改一次性提交到当前分支(如 master),生成一个新的版本;
- 关键要求:-m 后的提交说明必须清晰、准确,描述本次修改的核心内容(如 “新增 readme 文件,说明项目用途”“修复登录功能 bug”),方便后续查看版本记录时快速理解;
- 提交后特性:
- 每个提交会生成唯一的版本 ID(基于 SHA 算法的长字符串,如 7e67b08...),全球唯一;
- 版本 ID 为何不用自增 ID?多人协作时,多终端同时提交会导致自增 ID 冲突,哈希 ID(SHA)可避免该问题;
- 提交记录会显示修改统计(如 “2 insertions” 表示新增 2 行代码),Git 本质存储的是 “文件修改差异”,而非完整文件副本,节省空间。
4. git diff:查看修改差异
- 作用:对比工作区与暂存区、或工作区与仓库的代码差异(显示具体修改的行内容);
- 最佳实践:重大提交前必须执行 git diff,检查修改是否符合预期,避免提交错误代码。
5. git reset --hard <版本标识>:版本回退(时光穿梭)
- 核心概念:HEAD 是 Git 的 “当前指针”,默认指向当前分支的最新提交版本;
- 常用语法:
- git reset --hard HEAD^:回退到上一个版本(^ 表示 “上一个”,^^ 回退两个版本,以此类推);
- git reset --hard <版本ID>:回退到指定版本(版本 ID 可通过 git log 查看,无需写完整,前 6-8 位即可);
- 注意:--hard 选项会直接覆盖工作区和暂存区的修改,回退前需确保未保存的修改已处理(提交或备份),避免数据丢失。
6. git checkout -- <文件名>:撤销工作区修改
- 作用:撤销工作区中对该文件的所有未暂存修改,恢复到 “最近一次提交或暂存的状态”;
- 示例:git checkout -- readme.txt(若文件已暂存,需先执行 git reset HEAD <文件名> 取消暂存,再执行该命令);
- 警告:该操作不可逆,未暂存的修改会直接丢失,执行前需确认是否需要保留。
三、关键补充说明
- 版本 ID(哈希值):每个提交的唯一标识,通过 git log 命令可查看所有提交记录及对应的版本 ID;
- “干净状态”:执行 git status 显示 “nothing to commit, working tree clean” 时,说明工作区、暂存区与仓库完全一致,无未提交修改;
- 分支本质:master 等分支是 “版本提交的指针”,切换分支本质是移动 HEAD 指针指向不同的提交记录。