git stash使用场景及方式
由于通常都是使用idea上的git插件,通过插件提供的功能来操作git。对实际的git工作流中遇到的许多问题总是不明不白。现在就慢慢一个个点看文档来理清楚。
简单而言,git stash就是用于处理已改动而未提交的工作目录状态。
举例来讲,当前需要在分支A上实现一个功能F1, 现在功能F1实现了一半,但需要优先切换到分支B修复bug1 。
这个时候,我们通常不应该为了仅仅实现一半的功能而做一次Git提交。这个时候git会阻止分支切换,因为在当前分支下所做的修改可能会与想要切换的分支产生冲突。
git分支切换要求保持当前分支的工作目录处于一个干净的状态。这个时候就可以使用git stash将当前所做的改动进行暂存,git将会将本次分支改动保存到一个栈上。
git stash // 保存当前分支上所做的修改
此时查看工作目录状态将得到
git status
# On branch master
nothing to commit, working directory clean
查看暂存栈会看到此次暂存的记录
git stash list
stash@{0}: xxx(改动描述)
然后 git checkout B
切换到分支B,修复完bug1之后再使用git checkout A
切换到A分支。接着使用 git stash apply stash@{0}
应用之前保存的修改,即可将工作目录还原到先前的状态了。
其他命令
git stash drop stash@{0} 移除指定的stash
git stash pop 将stash栈的第一个stash应用并移除
git stash show stash@{0} -p 查看stash0所做的改动
git stash branch newbranch 新建分支