# Git 暂存与提交

## 常用命令速查表

| 命令                          | 功能                     |
| --------------------------- | ---------------------- |
| `git init`                  | 在当前目录初始化 Git 仓库        |
| `git clone <url>`           | 克隆远程仓库到本地              |
| `git status`                | 查看当前文件状态               |
| `git add <file>`            | 将文件添加到暂存区（或开始跟踪）       |
| `git commit -m "msg"`       | 将暂存区内容提交到本地仓库          |
| `git diff`                  | 查看工作区与暂存区的差异           |
| `git diff --staged`         | 查看暂存区与上次提交的差异          |
| `git log`                   | 查看提交历史                 |
| `git log --oneline --graph` | 简洁图形化日志                |
| `git show <commit>`         | 查看某次提交的具体内容            |
| `git rm <file>`             | 从 Git 中移除文件（同时删除工作区文件） |
| `git rm --cached <file>`    | 从跟踪清单中移除但仍保留工作区文件      |
| `git mv <old> <new>`        | 重命名/移动文件               |
| `git checkout -- <file>`    | 撤销工作区的修改（危险）           |
| `git reset HEAD <file>`     | 取消暂存（从暂存区移回工作区）        |
| `git commit --amend`        | 修改最近一次提交（合并到上次提交中）     |


## git add — 添加到暂存区
```bash
# 跟踪新文件 或 暂存修改
$ git add <文件名>

# 递归添加整个目录
$ git add <目录名>
```
⚠️ 关键理解：

git add暂存的是执行命令时的文件版本

修改后需重新git add才能更新暂存区

理解为"精确添加内容到下次提交"而非"添加文件到项目"

## git commit — 提交到本地仓库

`$ git commit -m "提交说明"`
提交后，暂存区清空

文件状态变为未修改

快照永久保存在.git目录

## git diff — 查看差异
```bash
# 查看未暂存的改动（工作区 vs 暂存区）
$ git diff

# 查看已暂存的改动（暂存区 vs 上次提交）
$ git diff --staged
# 或
$ git diff --cached
```

## 完整工作流示例
场景：在已有项目中工作

```bash
# 1. 克隆或初始化仓库
$ git clone <url>
# 或
$ git init

# 2. 查看当前状态（工作目录干净）
$ git status
> nothing to commit, working directory clean

# 3. 修改文件（如 CONTRIBUTING.md）
# 编辑文件...

# 4. 查看改动的具体内容
$ git diff

# 5. 暂存修改
$ git add CONTRIBUTING.md

# 6. 再次修改同一文件
# 再次编辑...

# 7. 此时暂存区是第一次修改的版本
# 需要重新暂存最新版本
$ git add CONTRIBUTING.md

# 8. 查看已暂存的改动
$ git diff --staged

# 9. 提交
$ git commit -m "更新贡献指南"

# 10. 推送到远程（如需要）
$ git push
```
---

[[版本控制系统]] · [[Git学习顺序]] · 上一章：[[Git 核心概念与基础操作]] · 下一章：[[Git 历史查看与撤销]]
