🚀 Git 极速入门与速查手册
本指南涵盖 Git 的核心概念、日常工作流以及“救命药丸”命令,助你快速上手。
一. Git 核心概念:四个工作区域
在使用命令之前,你需要理解 Git 的四个关键区域:
-
工作区 (Workspace) :
- 定义: 你电脑里能看到的目录,你在这里编写代码和进行修改。
-
暂存区 (Index/Stage) :
- 定义: 一个临时存放你已决定要提交的改动的地方(像是购物车的结算台)。
-
本地仓库 (Repository) :
- 定义: 安全存放数据的位置,这里包含你提交的所有历史版本。
-
远程仓库 (Remote) :
- 定义: 托管代码的服务器(如 GitHub, GitLab, Gitee),用于团队协作。
💡 数据流向:
工作区 暂存区 本地仓库 远程仓库
二. 安装与初始化
⚙️ 设置用户信息(第一次安装后必须做)
Git 需要知道你是谁,以便在提交记录中留下正确的作者信息。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
🛠️ 开始一个项目
- 从零开始(本地新建项目)
mkdir my-project # 创建项目目录 cd my-project git init # 初始化,当前目录下会多一个 .git 隐藏文件夹 - 克隆现有项目(远程到本地)
git clone https://github.com/username/project.git
三. 基础工作流(日常最高频)
这是你日常开发中最常使用的三板斧:
| 步骤 | 命令 | 说明 |
|---|---|---|
| 查看 | git status | 随时查看文件状态(未跟踪、已修改、已暂存等)。 |
| 暂存 | git add . | 将所有修改和新增的文件添加到暂存区。 |
| 提交 | git commit -m '清晰描述本次提交内容' | 将暂存区的改动提交到本地仓库。 |
🔎 实用查看命令
git status # 查看工作区和暂存区的状态 (高频)
git diff # 查看工作区和暂存区之间的差异
git diff --staged # 查看暂存区和本地仓库最新版本之间的差异
git log # 查看详细提交历史
git log --oneline # 查看简洁历史 (一行一条,包含Commit ID)
git log -p -1 # 查看最近一次提交的具体改动内容
四. 分支管理(Git 的杀手锏)
分支允许你在不影响主线(main/master)的情况下独立开发新功能或修复 Bug。
🌳 分支操作
git branch # 列出所有本地分支,带 * 号的是当前分支
git branch feature-a # 创建新分支 feature-a
git switch feature-a # 切换到 feature-a 分支 (推荐使用,旧版用 git checkout)
git switch -c feature-b # **创建并立即切换**到 feature-b (最常用)
🤝 合并分支
当你开发完功能,需要把 feature-a 合并回 main:
git switch main # 1. 先切回主分支 (或目标分支)
git merge feature-a # 2. 把 feature-a 的工作合并进来
🗑️ 删除分支
git branch -d feature-a # 删除已合并的分支 (安全删除)
git branch -D feature-a # 强制删除未合并的分支 (谨慎使用)
五. 远程同步(团队协作)
🔗 关联远程仓库(如果是本地 init 的项目)
git remote add origin https://github.com/xxx/xxx.git
⬆️ 推送代码 (Push)
把本地的更新上传到服务器。
git push -u origin main # 第一次推送时使用 -u,它会设置远程跟踪,以后只需 git push
git push # 后续推送,将本地提交推送到远程仓库
⬇️ 拉取代码 (Pull)
把服务器的更新下载并自动合并到本地。
git pull # 团队协作开始工作前,第一件事就是 pull
# 等同于: git fetch (下载远程更新) + git merge (合并到本地分支)
六. 🚑 救命药丸(撤销与回退)
新手最容易慌张的环节,请谨慎操作,了解每个命令作用的区域。
| 场景 | 命令 | 作用区域 | 备注 |
|---|---|---|---|
| 工作区撤销 | git restore <文件名> | 工作区 | 丢弃工作区的修改,文件回到上次提交或暂存时的状态。 |
| 暂存区撤销 | git restore --staged <文件名> | 暂存区 | 将文件移出暂存区,但保留文件在工作区的修改。 |
| 修改上次提交信息 | git commit --amend | 本地仓库 | 修改最后一次提交的注释。 |
| 暂存工作现场 | git stash | 工作区/暂存区 | 把当前所有未提交的修改“冻结”起来,清空工作区,方便切换分支。 |
| 恢复暂存现场 | git stash pop | 工作区/暂存区 | 恢复最近一次暂存的工作,并从栈中删除该记录。 |
| 版本回退 | git reset --hard HEAD~1 | 本地仓库 | 危险! 彻底丢弃最近一次提交,工作区文件也跟着回退。 |
七. 忽略文件 (.gitignore)
不是所有文件都需要上传(比如依赖包、密码文件、编译产物)。在项目根目录创建一个名为 .gitignore 的文件,写入要忽略的规则。
# .gitignore 内容示例
# 忽略所有 node_modules 文件夹
node_modules/
# 忽略所有 .log 结尾的文件
*.log
# 忽略特定配置文件 (如环境变量)
.env
# 忽略 macOS 系统文件
.DS_Store
# 忽略所有编译输出的 .exe 文件
*.exe
🌟 总结:新手速查表
| 场景 | 命令 | 最佳实践 |
|---|---|---|
| 项目开始 | git init / git clone | 决定项目来源。 |
| 日常三步 | git add . -> git commit -m "msg" -> git push | 每次完成一个小功能就提交一次。 |
| 随时自查 | git status | 没事多敲敲这个,确保你的操作在你预期的区域。 |
| 后悔药 | git restore / git reset | 确保知道撤销的级别(工作区、暂存区或提交)。 |
| 分支切换 | git switch -c <name> | 新建功能,必开分支。 |
| 同步远程 | git pull (上班第一件事) / git push (下班最后一件事) | 保持代码同步,避免冲突。 |
初学者,建议先只记住 add, commit, pull, push 这四板斧,遇到问题再查阅其他命令。