04 Git存档和回退
图示(往右存档,往左回退):
存档操作
git add
git add 用户将工作区存档到暂存区,暂存区是一个临时存档的区域。
最常用法
将当前文件夹所有文件存档(最常用法):
git add .
其他用法
将指定文件存档:
git add <file>
交互选择更改片段(patch 模式):
git add -p
git commit
将暂存区的临时存档保存到版本库,形成永久存档(快照)。
最常用法
简介提交:
git commit -m "提交信息"
其他用法
打开编辑器输入提交信息:
git commit
跳过 add,提交已跟踪文件(不包括新文件):
git commit -am "提交信息"
回退操作
git restore
git restore 的作用,用暂存区恢复工作区。
最常用法
恢复指定文件:
git restore <file>
其他用法
git restore --staged <file> # 撤销 git add(从暂存区移除)
git restore --source=<commit> <file> # 恢复为指定提交版本
git reset
git reset
命令:用版本库恢复工作区和暂存区。
回退选项:
回退选项 | 工作区 | 暂存区 | 版本库 |
---|---|---|---|
--soft | 不变 | 不变 | HEAD 指向历史版本 |
--mixed(默认) | 不变 | 清空 | HEAD 指向历史版本 |
--hard | 清空并用历史版本覆盖 | 清空并用历史版本覆盖 | HEAD 指向历史版本 |
最常用法
使用 git log 命令列出历 史版本,使用 git reset --hard <commit-id>
命令:移动版本库,将工作区和暂存区恢复到指定版本。

其他用法:
版本库移动,暂存区和工作区保持不变:
git reset --soft <commit_id>
版本库移动,暂存区清空,工作区不变:
git reset --mixed <commit_id>
# 丢弃对某个文件的所有本地更改(谨慎使用)
git checkout -- <file>
# 示例: 将 main.py 恢复到最后一次提交的状态,丢弃所有未提交的修改
git checkout -- main.py
# 重置远程分支(强制同步,谨慎使用)
git reset --hard origin/main
git pull origin main --force
# 示例: 强制同步本地分支与远程分支,丢弃所有本地未推送的更改
git reset --hard origin/main
git pull origin main --force