git回退版本

git回退版本

_

## 2026-02-25: Git 版本回退方法整理

### 问题描述
了解如何使用 Git 回退到指定的提交版本。

### 回退方法对比

| 方法 | 命令 | 效果 | 适用场景 |
|------|------|------|---------|
| **临时查看** | `git checkout <commit-hash>` | 只查看代码,不修改历史 | 想看看旧版本代码,不准备回退 |
| **软重置** | `git reset --soft <commit-hash>` | 回退但保留更改在暂存区 | 想重新组织提交 |
| **混合重置** | `git reset <commit-hash>` | 回退但保留更改在工作区 | 想重新修改后再提交 |
| **硬重置** | `git reset --hard <commit-hash>` | 完全丢弃之后的所有提交 | 确定要完全回到旧版本 |
| **反向提交** | `git revert <commit-hash>..HEAD` | 创建新提交撤销更改 | 已推送到远程,需保留历史 |

### 详细说明

#### 1. 临时查看(不修改历史)
```bash
# 进入分离头指针状态查看旧代码
git checkout e99aed6

# 查看完后返回最新状态
git checkout why_develop
```

#### 2. 真正回退(修改历史)

**软重置** - 保留更改在暂存区:
```bash
git reset --soft e99aed6
# 可以重新组织提交内容
git commit -m "重新组织的提交"
```

**混合重置(默认)** - 保留更改在工作区,未暂存:
```bash
git reset e99aed6
# 可以继续修改文件后重新提交
```

**硬重置** - 完全丢弃之后的所有提交和更改:
```bash
git reset --hard e99aed6
```
⚠️ 警告:之后的提交和更改将无法恢复!

#### 3. 已推送到远程的情况

如果已经推送到远程分支,使用 reset 后需要强制推送:
```bash
git reset --hard e99aed6
git push -f why_develop
```
⚠️ 警告:强制推送会覆盖远程,团队协作时慎用!

**推荐使用 revert(保留历史)**:
```bash
# 撤销 e99aed6 到 HEAD 的所有提交
git revert e99aed6..HEAD

# 这会创建新的提交来撤销更改,历史完整保留
```

### 常用场景选择

```
个人开发分支,确定要丢弃 → git reset --hard
想重新组织提交内容     → git reset --soft
已经推送远程,团队协作   → git revert
只是看看旧代码         → git checkout
```

### 相关命令
```bash
# 查看提交历史
git log --oneline

# 查看某次提交的详细内容
git show e99aed6

# 查看两次提交之间的差异
git diff e99aed6 HEAD
```

Vite环境变量实现原理 2026-02-24

评论区