git stash的使用场景: 当前分支下的某几个文件,前面的修改部分已经放在暂存区,目前在工作区还在进行修改,如果此时需要在当前文件下进行紧急修复bug,就需要把工作区正在修改的文件stash暂存起来,进行bug修复工作,在完成bug修复工作后,提交commit,将暂存的工作区文件内容拿出来继续工作。
举例:对于index.html文件之前已经提交过了,现在工作区仍然还在index.html文件上进行工作,这个时候你被通知说,要对index.html文件进行一个修复提交,工作区的内容还没有改好不想提交。完美做法是:将工作区的内容stash,在index文件中修复bug提交后,再将工作区的内容取出来,恢复到暂存时的状态。
恢复暂存时的状态有两种命令:git stash pop
git stash apply
这两种都可以,区别呢?
使用git stash命令之后会在stash列表中生成一个对应的信息,使用apply命令恢复,stash列表中的信息是会继续保留的,而使用pop命令进行恢复,会将stash列表中的信息进行删除。
例子
初始状态index.html文件在工作区进行修改:可以使用命令git status 和git diff看到此时的修改信息。
这个时候还没有修改完,不想提交,但是要去修复bug。
将index文件的内容stash起来,使用命令:git stash,如下图:使用git stash命令后,再使用git status或者git diff查看可以发现,对工作区的修改内容已经没有了,这个时候进行bug修复提交
bug修复提交后,恢复之前暂存的状态,这个时候有两种命令可选,我们选择:git stash pop命令
并使用git status和git diff可以发现,此时工作区index文件的内容跟我们暂存前是一样的。
另:在进行bug修复时,如果修复bug的部分与我们保存暂存时文件的内容冲突时(在一处进行修改),这样在使用命令git stash pop进行恢复暂存时会出现冲突,应该怎么解决?根据当前情况解决冲突?