一、问题描述
-
场景1:项目一期的工作完成并投入市场形成master主分支封板,二期开发会新建一个本地sit分支进行开发。这时市场上的版本出现了bug,要切回一期的master主分支进行修改代码,发现sit分支中新增和修改的代码出现在了master分支中。
-
场景2:小明拥有两个本地分支A和B,两个分支中都有LoginActivity.class文件,小明在A分支中修改了LoginActivity.class文件的内容,git checkout B后发现在分支A中修改的内容出现在分支B中。
二、分析原因
1、什么场景下会出现
小明原本只有A分支,后来git checkout -b B生成了一个B分支;
小明的A和B分支都从远程分支master下拉了一次版本,现在本地两个分支的版本完全一样;
2、原因是什么
我想现在大家已经知道关键问题在哪里了吧,就是两个分支的版本完全一样,原来git checkout切换分支的时候,会对比当前分支的md5值,当两个分支的md5值一样的时候,git check就会带着你的修改的内容去另外一个分支。
三、解决方案
两种方式二选一
- 1、可以使用git stash把工作区空间的修改隐藏起来,就可以切换到其他分支了,然后使用git stash list查看stash,再用git stash pop stash@{0}应用并删除该stash@{0}。
- 2、将新分支的代码修改之后,使用git commit提交到本地仓库。