实战案例一
执行git stash后切换到master分支,结果:
添加的文件还在,添加的代码不见了
然后,重新切换到develop,执行git stash pop恢复工作现场,如下
代码回来了,添加的文件也还在
总结:stash 可以对添加的代码进行保存,新增加的文件还是会被携带到其他分支
实战案例二
在实验一的基础上,执行git add .,然后切换到master分支
新添加的代码和文件一并被带过来。
接下来,切换到develop,执行git stash,然后切换到master
新代码和新文件不见了。又然后,切换到develop,然后执行git stash pop,新代码和新文件重新出现
总结:只有执行了git add .和git stash才能对新代码和新文件进行工作现场保留
实战案例三
在develop上stash,然后切换到master上执行stash pop,新文件和新代码出现了
总结:工作现场的保留不是只保留在当前分支,而是保存在某个缓存区,然后你在哪个分支上进行stash pop就会恢复工作现场到哪个分支
实战案例四
在develop上stash,然后切换到master分支,在5.txt添加一些代码,然后执行git stash pop,5.txt的代码,6.txt的代码和新文件都出现了
总结:应证了实验三
实战案例五
撇开以上实验(实验五与上述实验无关)
然后执行git add .和 git stash,又回到初始状态
stash把新代码和新文件藏起来了,切换到master,新增文件和编辑1.txt,然后执行git reset --hard HEAD,1.txt新的内容不见了,但是新文件还在,然后执行stash pop,结果:develop上stash的代码和文件还有master上添加的文件都出现
总结:新文件不能reset掉,新代码可以,是不是很出乎意料,reset只能撤销有git add过的内容,也就是有添加到暂存去的内容
更多git实战知识请点击这里