Git 撤销&回滚

    科技2026-01-01  9

    第一部分:撤销&回滚

    1.Git add之前 撤回

    git checkout [file] # 撤销工作区指定文件的修改 git checkout . # 撤销工作区所有的修改

    2.撤回 Git add

    git reset HEAD # 撤回所有 Git add 的数据 git reset HEAD [file] # 撤回指定 Git add 的文件

    3.撤回 Git commit

    撤回到上一个commit,保留修改的内容

    git reset HEAD^

    撤回到上一个commit,不保留修改的内容

    git reset --hard HEAD^ # --hard谨慎使用,因为其撤销的工作区内容不可恢复

    4. 重新提交commit(覆盖提交)

    git commit --amend -m '提交描述'

    原理:采用的是重新提交,并覆盖最后一次 Git commit 的结果。

    第二部分:Git reset

    git reset 命令用于回退版本,可以指定退回某一次提交的版本。

    git reset 命令语法格式如下:

    git reset [--soft | --mixed | --hard] [HEAD]

    –mixed

    -mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

    git reset [HEAD]

    实例

    git reset HEAD^ # 回退所有内容到上一个版本 git reset HEAD^ hello.js # 回退 hello.js 文件的版本到上一个版本 git reset 052e # 回退到指定版本

    –soft

    –soft 参数用于回退到某个版本,git add之后,commit 之前,并保留当前工作区文件内容修改

    git reset --soft HEAD

    实例

    git reset --soft HEAD~3 # 回退上上上一个版本

    –hard

    –hard 参数 撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:

    git reset --hard HEAD

    实例

    git reset --hard HEAD~3 # 回退上上上一个版本 git reset --hard bae128 # 回退到某个版本回退点之前的所有信息。 git reset --hard origin/master # 将本地的状态回退到和远程的一样

    注意:谨慎使用 –hard 参数,它会删除回退点之前的所有信息,所撤销的工作区未提交的内容不可恢复

    HEAD说明

    HEAD 表示当前版本HEAD^ 上一个版本HEAD^^ 上上一个版本HEAD^^^ 上上上一个版本HEAD~n 上n个版本

    第三部分:log与reflog

    git reflog

    查看当前仓库git的所有操作记录

    git reflog

    终极奥义:可以通过git reset 与 git reflog回滚一切操作,包治百病。

    git log

    查看 当前分支 的commit log

    git log

    可以通过git reset 与 git log回滚到指定的HEAD。

    Processed: 0.012, SQL: 9