硬撤销实战案例
初始状态:在develop分支上有一文件test.txt。
1.添加文件namelist.txt
2.编辑文件test.txt
3.执行git reset --hard HEAD
结果,test.txt回到初始状态,但是namelist.txt还在
如果在第二和第三步之间骤执行了git add .
那么到执行第三步后test.txt会回到初始状态,namelist.txt也会不见
首先要明白上图,然后再来理解上述案例,git reset --hard HEAD只会撤销被添加在暂存区的文件,如果新文件没有被添加到暂存区,是无法git reset --hard HEAD来删除掉的
软撤销实战案例
首先查看当前状态为clean,接下来软撤销到“master二次代码”,如下:
由上图可见,git仓库已经被撤回到了cc765ff77e1805228ff78034554a647b275a8c3d,但是暂存区还是保持在ac445f01d039f3f31b7a54e9a98c4ce93a5a29f5
如果你要撤销暂存区的内容到工作区呢,如下图:
状态回到了Changes not staged for commit,也就是在git add .之前的状态
再者,如果此刻,“\345\217\221.txt”文件我也不要了,那么就硬撤销,如下图:
是不,工作区、暂存区和git仓库都撤回到了“master二次代码”的那个版本
同步撤销到远程仓库
代码撤销好了,那么我要push到远程去,推不上去要:
杀手锏来了,执行git push -f
这样就可以将代码强行推到远程仓库去,让远程仓库的代码与本地保持同步,其中-f就是force的首字母,force是强制的意思