Git 撤销与回滚操作 Stash、Reset 与 Revert
一、工作区暂存:git stash
1. 概念与作用
当你的工作区有未完成的修改,但又需要立即切换到另一个分支(如处理紧急 Bug)时,git commit 显然不合适。git stash 可以临时保存当前工作区和暂存区的所有修改,并将工作区恢复到最近一次提交的状态。
⚠️ 注意:
stash不会保存未被 Git 追踪(Untracked)的文件。如果需要,你需要先git add或使用git stash -u。
2. 核心操作命令
$ git stash默认保存所有已追踪文件的修改(工作区和暂存区)。
$ git stash save "描述信息"保存暂存的同时,添加描述信息方便查找。
$ git stash list查看所有存储的暂存列表。
$ git stash apply [stash@{n}]应用指定的暂存(不删除暂存记录)。
$ git stash pop应用最近一次的暂存,并将其从列表中删除。
$ git stash drop [stash@{n}]删除指定的暂存记录。
$ git stash clear清空所有暂存记录(慎用!)。
二、撤销本地修改:git reset
1. 概念与作用
git reset 命令用于重置 HEAD 指针,将当前分支的引用指向上一个或指定的提交版本。这个操作会修改本地的提交历史,通常用于私有分支(未推送到远程的本地分支)的撤销操作。
2. 重置模式详解
git reset 提供了三种模式,决定了撤销提交后,对暂存区和工作区的影响:
Commit ID 查找: 可以使用提交的 哈希值(40 位或前几位)或相对引用(如 HEAD~1 代表上一次提交)。
三、安全回滚提交:git revert
1. 概念与作用
git revert 用于撤销历史上的某一个或多个提交。与 reset 直接修改历史不同,revert 的原理是创建一个新的提交,这个新提交的内容与要撤销的提交刚好相反。
2. 核心优势
安全: 不会修改历史记录,而是用一个新的提交来抵消旧提交的影响。
适用于公共分支: 这是唯一推荐用于回滚已推送到远程仓库(如
master或dev)的提交的方式。
3. 命令行操作示例
示例 1: 回滚指定的提交
# 撤销 Commit ID 为 [Commit ID] 的提交。
# Git 会打开编辑器让你输入新的 Revert 提交信息。
$ git revert [Commit ID]
示例 2: 回滚最近三个提交(但保留历史记录)
# 撤销 HEAD^ 到 HEAD 之间的提交(注意是倒序)
$ git revert HEAD~3..HEAD
#Git(5)
文章作者:樱羽雨奈
文章链接:https://www.xiyung.cn/archives/git-cxhg
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!