问题形容
假如有这样一个场景需要:
- 某一天,咱们正在本人的开发分支上欢快的写代码
- 忽然
产品强人
找到咱们,说客户要求在生产环境上给首页加上一个暗影,难看一些 - 要立即,马上加!
- 然而咱们本人的开发分支上代码还没有开发完
- 咱们不想去
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.js
Please 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-…