问题形容

假如有这样一个场景需要:

  • 某一天,咱们正在本人的开发分支上欢快的写代码
  • 忽然产品强人找到咱们,说客户要求在生产环境上给首页加上一个暗影,难看一些
  • 要立即,马上加!
  • 然而咱们本人的开发分支上代码还没有开发完
  • 咱们不想去git add ./git commit -m 'xxx'(不想去减少提交记录)
  • 然而咱们如果间接切换到生产分支,当下还没有写完的代码就会被overwritten(容易失落当下还没写完的代码)
  • 此时,git stash命令就闪亮退场啦...

操作演示步骤

  • 咱们晓得Git是命令行代码工具,用于治理咱们的开发代码
  • 基于这个底层工具,一些大佬研发出一些可视化的Git治理插件(如在vscode中应用)
  • 笔者的习惯是应用命令行Git操作,搭配GitLens — Git supercharged可视化Git插件
  • 上面笔者将在vscode编辑器中,联合GitLens — Git supercharged插件去演示场景需要

下载GitLens — Git supercharged插件

笔者也举荐大家应用这个可视化Git工具,尽管不怎么用这个可视化工具操作代码,不过用于看本人提交的代码操作,还是比拟直观的。

vscode拓展下载

下载胜利

演示操作图解

假如有两个分支,git branch查看一下

咱们当下在dev分支欢快地写代码呢

// 原来代码console.log('我是开发分支')console.log('我是开发分支')console.log('我是开发分支')// 写了一半,写成了console.log('欢快地写代码')console.log('欢快地写代码')console.log('欢快地写代码')

当咱们想要间接切换分支时,git会有对应谬误正告,因为代码还没add还没commit

error: Your local changes to the following files would be overwritten by checkout:        home.jsPlease commit your changes or stash them before you switch branches.Aborting/*谬误:切换分支时将笼罩对以下文件的本地更改:home.js请在切换分支之前提交更改或将其暗藏。正在停止*/ 

大家看到了吧,实际上Git曾经对咱们进行提醒了,不要间接切换分支,否则就给你写的代码笼罩掉。当然你能够add commit当前再切换,或者执行stash相干命令将其暗藏。

咱们能够执行命令git stash save "正文"将写了一半的代码暗藏起来,如下图:

也能够看STASHES中的详情

而后能够执行git status查看状态,发现工作树洁净了,能够切换分支了

而后咱们git checkout master,进行主分支代码批改,操作结束当前,再切回dev分支上,再执行git stash pop命令,将咱们刚刚暗藏在STASHES中的批改代码再弹出来即可持续欢快地写代码啦...,如下图:

git stash代码总结

将未写完的代码,暗藏到暗藏区,倡议应用第一条,能够加一点正文,以便于回过头来查看(尽管二者是一个意思)

  • git stash save "正文" (保留加正文暗藏)
  • git stash (保留不加正文暗藏)

将暗藏区的代码取出来,复原原样,倡议应用第一条,取出即删除,不会产生冗余代码(相当于只有一份,丢进去,再拿进去);第二条相当于复制一份拿进去

  • git stash pop(取出并删除STASHES中的暗藏内容)
  • git stash apply (取出不删除STASHES中的暗藏内容)

再搭配GitLens Git supercharged插件可视化看成果,能够解决99%的代码未写完须要切换分支的需要。实际上git-stash能够命令也是十分多的,上述文章根本够用了,不够用的话咱们再去看官网文档

官网文档地址: https://git-scm.com/docs/git-...