git 切换分支时会把未add或未commit的内容带过去, 这一点值得注意。
为什么呢?
因为未add的内容不属于任何一个分支, 未commit的内容也不属于任何一个分支。 也就是说,对于所有分支而言, 工作区和暂存区是公共的。
要想在分支间切换, 又不想又上述影响, 怎么办呢? git stash搞起。要注意,在当前分支git stash的内容, 在其他分支也可以git stash pop出来,为什么? 因为:工作区和暂存区是公共的。
少说了一点,就是这两个分支是完全相同时,(即最后一次commit是完全相同)才可以在不add commit 新修改的情况下切换分支,但注意这个时候切换分支会把修改带到切换后的分支。例如你在b1分支修改文件,切换到b2,在b2上add commit,则这个commit是属于b2的,你commit之后在切换回b1,查看该文件,你会发现修改没了,切换回b2查看该文件,修改有了,再次证明最后在哪个分支commit,这个commit就属于那个分支的。 如果两个分支完全不同,例:b1上新建一个分支b2,这个时候两个分支还是相同的,如果b1哪怕提交了一个commit,这两个分支就会变得完全不同了,两个完全不同的分支,如果你在b1上有修改,是没办法switch到b2的,会报错:【error: Your local changes to the following files would be overwritten by checkout:。。。 】