Git 撤销操作
在使用 Git 过程中,经常需要撤销某些操作。本节将介绍 Git 中的各种撤销命令及其使用场景,帮助你更好地管理代码版本。
学习目标
- 掌握工作区和暂存区的撤销操作
- 学习如何修改和撤销提交
- 理解储藏(stash)的使用方法
- 掌握高级撤销操作(变基、重置等)
基础撤销操作
撤销工作区修改
撤销单个文件的修改:
# 使用传统语法 git checkout -- filename # 使用新语法(推荐) git restore filename
撤销所有未暂存的修改:
# 使用传统语法 git checkout . # 使用新语法(推荐) git restore .
撤销暂存区修改
取消暂存单个文件:
# 使用传统语法 git reset HEAD filename # 使用新语法(推荐) git restore --staged filename
取消所有暂存:
# 使用传统语法 git reset HEAD # 使用新语法(推荐) git restore --staged .
提交操作
修改最后一次提交
修改提交信息:
git commit --amend -m "新的提交信息"
追加文件到最后一次提交:
git add forgotten_file git commit --amend --no-edit
撤销提交
创建新的提交来撤销之前的提交:
git revert <commit-hash>
重置到指定提交:
# 保留工作区修改 git reset --soft <commit-hash> # 重置工作区和暂存区 git reset --hard <commit-hash>
储藏操作
储藏更改
- 储藏当前更改:
# 快速储藏 git stash # 储藏时添加说明 git stash save "修改说明" # 储藏未跟踪的文件 git stash -u
管理储藏
查看储藏列表:
git stash list
应用储藏:
# 应用最近的储藏 git stash apply # 应用指定的储藏 git stash apply stash@{2} # 应用并删除储藏 git stash pop
删除储藏:
# 删除最近的储藏 git stash drop # 删除指定的储藏 git stash drop stash@{2} # 清除所有储藏 git stash clear
高级撤销操作
交互式变基
开始交互式变基:
git rebase -i <commit-hash>
常用变基命令:
- pick:保留提交
- reword:修改提交信息
- edit:修改提交内容
- squash:合并到上一个提交
- drop:删除提交
清理操作
- 清理未跟踪的文件:
# 查看将被删除的文件 git clean -n # 删除未跟踪的文件 git clean -f # 删除未跟踪的文件和目录 git clean -fd
最佳实践
谨慎使用强制操作
- 使用
--hard
前要确认 - 重要操作前先备份
- 避免强制推送到远程
- 使用
合理使用储藏
- 切换分支前储藏更改
- 为储藏添加清晰说明
- 及时清理不需要的储藏
变基注意事项
- 不要变基已推送的提交
- 在变基前创建备份分支
- 解决冲突后继续变基