git 撤销详解
暂存区撤销
场景:当我们执行了git add之后想要撤销
# 查看暂存区
git status
# 撤销提交到暂存区的指定文件
git reset [file_name]
# 撤销提交到暂存区的所有文件
git reset .
commit 撤销
场景:当我们执行了git commit之后想要撤销
soft
撤销到指定commit并保留之前的更改
# 查看 commit 记录
git log
# 撤销到指定的commit,并且保留之前提交的更改
git reset --soft [commit_id]
soft 可以省略
# git reset [commit_id] 等同于 git reset --soft [commit_id]
git reset [commit_id]
hard(谨慎使用)
撤销到指定commit并但不保留之前的更改,也就是说一旦撤销之前修改的内容就会消失,
可以在进行版本回退时使用
# 查看 commit 记录
git log
# 撤销到指定的commit,不保留之前的更改
git reset --hard [commit_id]
HEAD
使用HEAD可以替换掉上面的[commit_id]
如:
# 撤销到上一个版本
git reset --soft HEAD~1
HEAD 表示当前版本
-
HEAD^ 上一个版本
-
HEAD^^ 上上一个版本
-
HEAD^^^ 上上上一个版本
-
以此类推…
可以使用 ~数字表示
-
HEAD~0 表示当前版本
-
HEAD~1 上一个版本
-
HEAD~2 上上一个版本
-
HEAD~3 上上上一个版本
-
以此类推…
撤销远程并推送
使用了上面的命令进行了撤销之后,我们需要把远程的push也进行撤销,这个时候可以执行
如下命令:
git push -f
- 本地撤销之后,
push之前不需要进行pull,不然远程的会将本次撤销进行覆盖push -f是push --force的简写形式,意思是强制推送(force push)