git 撤销

git 撤销工作区的修改

git checkout -- 

文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是 文件自内容修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  • 一种是 文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

这个文件回到最近一次 git commit 或 git add 时的状态。

git reset 撤销:版本回退

  • git reset --hard <版本号>

    • 缓存区和工作目录都不会被改变
      git reset --soft
      
    • 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
      git reset --mixed
      
    • 缓存区和工作目录都同步到你指定的提交
      git reset --hard
      

    eg:

    • 撤销最新的提交,回退到上次提交
      git reset --hard HEAD^
      
    • 撤销最新的两次提交,回退到上上次提交
      git reset --hard HEAD~2
      
    • 撤销到 commit_id 之前的提交,回退到 commit_id 的提交
      git reset --hard <版本号>
      
  • git reset --xxx

    • 撤销操作时,将你的改动从缓存区中移除,但是这些改动还留在工作目录中
      git reset --mixed HEAD^
      
    • 撤销操作时,完全舍弃你的改动
      git reset --hard HEAD^
      
    • 撤销操作时,你的改动还保留在你的缓存区和工作目录
      git reset --soft HEAD^
      

    [图片上传失败...(image-edfe33-1554864437960)]

  • git 撤销已经 push 到远端的 commit

    git reset --hard <版本号>  
    // 为了覆盖掉远端的版本信息,使远端的仓库也回退到相应的版本,需要加上参数--force
    git push origin <分支名> --force
    

git 查看历史

查看提交历史

// 查看提交历史,以便回退到某个版本
git log

查看命令历史

// 查看命令历史,以便确定回到未来的某个版本【重返未来】
git reflog

你可能感兴趣的:(git 撤销)