stash 命令能够将还未 commit 的代码暂存起来,让你的工作目录变得干净,同时讲解idea中stash界面使用操作。
某一天你正在 dev (同时你的dev分支是先于当前master分支,或者说你修改的内容和master有相同的文件之类的)分支开发新需求,突然产品经理跑过来说线上有bug,必须马上修复。而此时你的功能开发到一半,于是你急忙想切到 master 分支,然后你就会看到以下报错:
因为当前有文件更改了且和master有冲突或者相同文件被其他人改过,需要提交commit保持工作区干净才能切分支。由于情况紧急,你只有急忙 commit 上去,commit 信息也随便写了个“暂存代码”,于是该分支提交记录就留了一条黑历史...(真人真事,看过这种提交),如果你学会 stash,就不用那么狼狈了。
git stash
就这样,当前修改的代码就被暂存了
执行命令后可以看见修改过的文件已经还原了。这个时候就可以随意切换分支了。
按应用场景,当你修复完成master分支bug,切换会dev,恢复代码则执行下面命令
git stash apply
可以看到,之前修改的代码恢复了,以及修改的文件状态也变为了git的修改待提交状态,这时候又可以继续写dev内容了。
# 保存当前未commit的代码
git stash
# 保存当前未commit的代码并添加备注
git stash save "备注的内容"
# 列出stash的所有记录
git stash list
# 删除stash的所有记录
git stash clear
# 应用最近一次的stash
git stash apply
# 应用最近一次的stash,随后删除该记录
git stash pop
# 删除最近的一次stash
git stash drop
当有多条 stash,可以指定操作stash,首先使用stash list 列出所有记录:
$ git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ...
stash@{2}: On ...
应用第二条记录:
$ git stash apply stash@{1}
pop,drop 同理。
鼠标对项目进行右键,打开菜单选择 git→Stash Changes…
弹出stash的创建对话框,并提示输入备注内容
创建后会右下角提示创建成功:
再次查看项目文件
idea界面操作和git命令操作的stash效果一致。
对项目进行鼠标右键,弹出菜单选择 Git→Unstash Changes…
注意:drop 删除一个暂存分区,删除后就没了哟,clear:清空所有版本,删除所有暂存内容,没了哟,这两个操作需谨慎。
从操作界面来看,idea支持将暂存内容版本直接作为一个新分支创建。
https://www.leftso.com/article/2407241015519672.html