事件发生情景:
在分支A上开发代码,一直没有commit,以致于想切回master分支时有个配置文件冲突,发生错误。
此时网上搜索了下错误代码,解决方案如下,
想查看文件哪里不一样,所以使用了代码 git diff -w webapp.iml
然后切换分支成功了(此时并不知原理为何)
之后继续切回分支A,发现代码回到了之前的状态,新的代码不见了,
吓得一身冷汗(劳资不想加班啊,何况是无意义的)
就开始找代码的过程。
有git fsck --unreachable
找回的文件不全,而且不是最新的。
继续,最后发现git stash的好处
=============================================================
git stash
保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status
命令,就会发现当前是一个干净的工作区,没有任何改动。使用git stash save 'message...'
可以添加一些注释
git stash pop
恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
================================================================
看完这个,我才明白为什么新开发未上传的代码会消失。
希望亲们引以为戒。
不过git stash 也很好用,要合理利用哦。
工作场景适用于:
我们有时会遇到这样的情况,正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来,然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复之前的进度继续开发新功能。
创建.gitignore
vim .gitignore
写入:
node_modules
npm-debug.log
package-lock.json
:wq
此时就创建好了需要忽略的配置