今天在一个情境下,假如我们在一个分支下做开发,但还没开发完成,master出现严重问题需要优先处理,此时我们直接git checkout master,切换到master的同时,会发现我们还没开发完分支的修改也被加到master的working directory,这当然不是我们所预想的,所以我们需要将手边的分支开发暂停并且进行储存
。
而此时我们可利用git add => git commit,然后就可放心至master分支进行修复问题,而后也能在回到我们开发中的分支,利用git commit -- amend对最后的一次commit进行修改。
而我们也可利用另一个较为简单的方法git stash。
首先我们在一个分支下创建一个新的档案,并且修改一个原已存在在分支中的档案,并且都无commit,利用git status查看,可发现新建档案的修改在working directory,而原档案的修改的在staging area。
利用git stash save可将我们当前还没commit的修改都暂存起来
,预设只会储存tracked files
,如果要暂存untracked files,可透过git stash save --include-untracked
。
git stash list:可查看暂存区有多少commit。
git stash -h:可查看指令的提示。
git stash pop:可将暂存区的commit取出来,而架构是先进后出,可发现我们第一次所取出来的为untracked file也就是我们第二次储存的修改。