各分支共享工作区和暂存区
(基于自己的试验以及网上评论区得出的结论,如有错误还请指正)
初始状态:现master分支下,有readme文件,其内容为空,有rmf文件,且都已commit
试验步骤如下:
- 新建试验分支test并且切换过去
- 在test分支中作如下改动
- 在readme中添加字符串"test this" 并且保存
- 删除rmf文件
- 新建newf文件
- 不保存直接
checkout master
发现步骤2中的改动全都生效 checkout test
操作,回到test分支,发现所作改变依然存在并为丢失,执行git stash
checkout master
回到master分支,发现master分支中的内容情况如下:- readme内容的改变恢复了,即readme仍然使空文件,内容更改失效
- 删除的rmf文件回来了,删除失效
- 新建的newf文件仍然存在,新建文件有效
- 回到test分支,其情况内容和步骤5中相同,使用
git stash pop
命令,即回到步骤2中的改动之后的情况。 - 再test分支中进行add和rm操作,即将改动提交到暂存区stage
- 切换到master分支,发现改动全都生效,即文件情况和步骤2中改动相同。
- 回到dev分支,将改commit
- 回到master,文件情况又回到了初始状态。
结论:各分支共享暂存区和工作区,在commit改动之前,每个分支看到的文件情况相同,如果执行stash指令,在其他分支中指保留新建文件操作。