常常有这样一种情况,你在你自己的分支上进行工作,这时另一个分支有一个问题需要你去处理,此时需要离开你自己的分支切换到目标分支,因此你运行了checkout命令,产生如下问题:
git checkout由于checkout会覆盖工作区和暂存区,因此git检测到你有未提交的修改,进行提示。
此时你自己进行开发的分支上的代码还没有完成,因此你不想进行提交,这时你就可以使用stash命令对你的修改进行储藏。
1. 首先查看status, 可以看到工作区有未add的修改,因此checkout命令会失败:
git status2. 在你进行开发的分支下运行git stash命令:
git stash3. 运行git stash后,查看当前分支的状态,发现工作区和暂存区都没有待处理的修改了,这时因此git将正在进行中的工作暂存在了stash栈中:
git status4. 此时,你可以方便的切换到其他分支进行工作了,你在此分支上的所有未提交的变更都保存在stash栈中。使用git stash list命令可以查看stash栈中所有的暂存变更:
git stash list5. 当你临时的工作处理完了,回到自己开发的分支,希望重新恢复之前的工作,此时只需要运行git stash apply命令,此命令会自动恢复stash栈栈顶的工作:
git stash apply6. 如果你希望恢复更早之前的储藏,可以通过git stash apply stash@{1}命令来恢复名为stash@{1}的储藏。
7. 运行git stash apply会将栈顶的储藏恢复,这意味着你曾经的文件变更会恢复到你储藏之前的状态,然而这只是针对工作区而言的,暂存区的文件并不会恢复。如果你希望暂存区的文件也恢复,你必须在运行git stash apply命令时带上一个--index的选项来告诉命令重新应用被暂存的变更。如果你是这么做的,你应该已经回到你原来的位置。
网友评论