Git - 撤销/恢复


带你深入掌握Git、GitHub和GitLab详细教程


  1. 撤销/恢复

    checkout:工作区变更
    reset:暂存区变更


  1. 撤回add的后的文件(暂存区恢复成和HEAD一样)
git reset HEAD

修改后查看是否成功

git status 

修改后查看和HEAD是否有区别

git diff --cached

  1. 撤回add的后的文件(暂存区恢复部分文件和HEAD一样)
git reset HEAD -- filepath1 filepath2

修改后查看是否成功

git status 

修改后查看和HEAD是否有区别

git diff --cached

  1. 让工作区的文件恢复和暂存区一样

场景:修改一版文件先add后未commit,准备再修改一版,最后发现还不如第一版的好,想要直接恢复第一版
清除暂存区(“注意不加 - - 就是切换分支了”,这个最好加上吧,虽然我试过是都可以)

git checkout src/main/resources/java.txt
git checkout -- index.html

修改后查看工作区和暂存区是否有区别

git diff 

  1. commit 之后版本回退(慎用

HEAD是当前版本 ^ 是上一个版本 ^^上上一个版本
也可以用commitId来回退版本

此命令会清空暂存区和工作区,回滚到指向的commitid

 git reset --hard 6ddd8cf
 git reset --hard HEAD^ / commitId
 git reset --hard HEAD~3:将最近3次的提交回滚

问题:
当你回退版本后又想再回到最新版本找不到commitId怎么办
用 git reflog 查看命令历史来查找最新的commitId

总结:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。 

查看回退后的树状结构图

gitk --all
  1. git reset 有三个参数

刚刚commit后,后悔了,怎么办执行下面的命令,工作区和暂存区和提交之前一样

git reset --soft HEAD^
 --soft 这个只是把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变
 --hard 这个是 把 HEAD, 暂存区, 工作区 都修改为 你指定的 commit 的时候的文件状态
 --mixed 这个是不加时候的默认参数,把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变

玩转Git锦集
玩转Git三剑客


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值