-
撤销/恢复
checkout:工作区变更
reset:暂存区变更
- 撤回add的后的文件(暂存区恢复成和HEAD一样)
git reset HEAD
修改后查看是否成功
git status
修改后查看和HEAD是否有区别
git diff --cached
- 撤回add的后的文件(暂存区恢复部分文件和HEAD一样)
git reset HEAD -- filepath1 filepath2
修改后查看是否成功
git status
修改后查看和HEAD是否有区别
git diff --cached
- 让工作区的文件恢复和暂存区一样
场景:修改一版文件先add后未commit,准备再修改一版,最后发现还不如第一版的好,想要直接恢复第一版
清除暂存区(“注意不加 - - 就是切换分支了”,这个最好加上吧,虽然我试过是都可以)
git checkout src/main/resources/java.txt
git checkout -- index.html
修改后查看工作区和暂存区是否有区别
git diff
- 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
- git reset 有三个参数
刚刚commit后,后悔了,怎么办执行下面的命令,工作区和暂存区和提交之前一样
git reset --soft HEAD^
--soft 这个只是把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变
--hard 这个是 把 HEAD, 暂存区, 工作区 都修改为 你指定的 commit 的时候的文件状态
--mixed 这个是不加时候的默认参数,把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变