暂存变更(git stash)
临时保存工作目录和暂存区的修改,恢复工作区到 HEAD 状态
bash
# 基本操作
git stash # 保存当前修改(默认名称为时间戳)
git stash save "描述" # 添加自定义描述
git stash pop # 应用最近一次暂存并删除记录(栈顶)
git stash apply # 应用暂存但不删除记录
# 进阶操作
git stash list # 查看所有暂存记录
git stash drop stash@{n} # 删除指定暂存记录
git stash clear # 清空所有暂存解决冲突与分支切换
1. 本地与远程提交冲突
bash
git stash # 暂存本地修改
git pull # 拉取远程代码
git stash pop # 应用暂存(可能需手动解决冲突)
# → 出现冲突时:解决冲突后执行 git add . && git commit2. 带修改切换分支
bash
git stash # 暂存当前分支的修改
git checkout dev # 切换到目标分支
git stash pop # 应用修改到新分支代码回退(git reset)
bash
# 撤销提交但保留修改
git reset --soft HEAD^ # 回退到上一提交(修改保留在暂存区)
git reset --mixed HEAD^ # 回退到上一提交(修改保留在工作区,默认行为)
git reset --hard HEAD^ # 彻底丢弃上一提交的所有修改
# 多级回退
git reset HEAD~2 # 回退前2次提交
# 修改最后一次提交
git commit --amend -m "新描述" # 重写上一次提交信息
git commit --amend file.txt # 添加新修改到上一次提交文件管理(git rm)
bash
# 移除已跟踪文件
git rm file.txt # 删除文件并取消跟踪
git rm -r --cached dist # 停止跟踪文件但保留本地副本(常用忽略历史缓存)提交规范(Commit Message)
| 类型 | 适用场景 |
|---|---|
feat | 新增功能 |
fix | 修复 bug |
docs | 文档更新 |
style | 代码格式调整(空格、分号等,非 CSS 变更) |
refactor | 重构代码(功能不变) |
perf | 性能优化 |
test | 测试用例变更 |
chore | 构建/依赖更新、配置文件修改 |
revert | 回滚操作 |
build | 构建流程变更 |
ci | CI 配置更新 |
示例:git commit -m "feat: 添加用户登录功能"
注意事项
git stash pop 冲突
当暂存内容与当前分支冲突时:- 手动解决冲突后执行
git add - 使用
git stash drop删除已应用的暂存
- 手动解决冲突后执行
reset --hard 风险
--hard会永久丢弃修改!确保无需保留再使用。amend 的远程同步
若已推送提交到远程仓库,git commit --amend后需强制推送:bashgit push --force # 谨慎使用!确保分支只有你操作缓存清理场景
git rm --cached常用于:- 从版本控制移除文件但保留本地
- 修正误添加到
.gitignore的文件