Git 基础入门笔记:工作流程 + 关键命令详解(含版本回退 / 修改撤销)

87 阅读4分钟

一、Git 核心基础概念

1. 仓库管理原则

  • 同一项目禁止创建多个 Git 仓库:多仓库会导致代码版本混乱、协作冲突,需保证一个项目对应一个仓库,集中管理代码版本。
  • 仓库初始化流程:

    1. 先创建开发目录(存放项目代码的文件夹);

    2. 执行 git init 命令初始化仓库,会自动生成隐藏的 .git 目录(核心仓库文件,存储版本信息、分支数据等);

    3. 初始化后默认创建 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 <文件名> 取消暂存,再执行该命令);
  • 警告:该操作不可逆,未暂存的修改会直接丢失,执行前需确认是否需要保留。

三、关键补充说明

  1. 版本 ID(哈希值):每个提交的唯一标识,通过 git log 命令可查看所有提交记录及对应的版本 ID;
  1. “干净状态”:执行 git status 显示 “nothing to commit, working tree clean” 时,说明工作区、暂存区与仓库完全一致,无未提交修改;
  1. 分支本质:master 等分支是 “版本提交的指针”,切换分支本质是移动 HEAD 指针指向不同的提交记录。