Git 撤销&回滚

第一部分:撤销&回滚

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 # 回退上上上一个版本

Git 撤销&回滚_第1张图片

–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 撤销&回滚_第2张图片
终极奥义:可以通过git reset 与 git reflog回滚一切操作,包治百病。

git log

查看 当前分支 的commit log

git log

Git 撤销&回滚_第3张图片
可以通过git reset 与 git log回滚到指定的HEAD。

你可能感兴趣的:(Git,git)