reset使用

git reset三种模式(–hard/–mixed/–soft)

Git会有三个区域:

1.Working Tree 当前的工作区域(本地代码存放位置)

2.Index/Stage 暂存区域,和git stash命令暂存的地方不一样。使用git add xx,就可以将xx添加进Stage里面(暂存区域)

Repository 提交的历史,即使用git commit提交后的结果(类似本地仓库)

git reflog 查看提交记录,q退出

1
2
3
4
5
6
7
8
9
git reset --hard 目标节点
重置Index/Stage区域和Working Tree中的内容到指针指定的节点时候的代码内容,若你修改代码后,没有commit,则修改会被擦除。
git reset --hard HEAD^
切到上一条commit 的同时,你工作目录(Working Tree)新的改动和已经add到暂存区域(Index/Stage )的新改动也一起全都消失了。若执行两次,则代码回到上上次commit的状态。
git reset --soft HEAD^
由于工作目录(Working Tree)的内容,会对比重置前的状态,将差异文件放进暂存区域(Index/Stage )
git reset HEAD^与git reset --mixed HEAD^
reset 如果不加参数,那么默认使用 --mixed 参数
工作目录(Working Tree)的内容和 --soft 一样会被保留,但暂存区域(Index/Stage )会被清空,即对比重置前的状态,将所有差异文件放进工作目录(Working Tree)

Git 的历史只能往回看 ,不能向未来看

git reset HEAD–filename与git checkout filename对比

1
2
3
4
5
git reset HEAD 111.php
清空暂存区,但修改不撤销。与git reset 111.php效果一致
git checkout 111.php
add 111.PHP文件后,对111.PHP进行修改,使用git checkout 111.php命令撤销修改
若add 并提交111.PHP文件后,对111.PHP进行修改,使用git checkout 111.php命令撤销修改

参考:

https://www.jianshu.com/p/c2ec5f06cf1a

https://www.runoob.com/linux/linux-comm-sed.html