Git不暂存提交代码也能切换到别的分支(vs code搭配GitLens Git supercharged看效果)
水冗水孚水冗水孚 -问题描述
假设有这样一个场景需求:
某一天,我们正在自己的开发分支上愉快的写代码突然产品强者
找到我们,说客户要求在生产环境上给首页加上一个阴影,好看一些要立刻,马上加!但是我们自己的开发分支上代码还没有开发完我们不想去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 save "注释"
(保存加注释隐藏)git stash
(保存不加注释隐藏)将隐藏区的代码取出来,恢复原样,建议使用第一条,取出即删除,不会产生冗余代码(相当于只有一份,丢进去,再拿出来);第二条相当于复制一份拿出来
git stash pop
(取出并删除STASHES
中的隐藏内容)git stash apply
(取出不删除STASHES
中的隐藏内容)再搭配GitLens Git supercharged
插件可视化看效果,可以解决99%的代码未写完需要切换分支的需求。实际上git-stash
可以命令也是非常多的,上述文章基本够用了,不够用的话我们再去看官方文档
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。