在使用git同步代码的过程中,也许会碰到一个项目有好几个分支的情况,就拿我最近的项目来说,我创建了两个分支:masterdev

经常是在dev分支上开发好了,然后切换到master分支上进行merge, 但是有时候在dev分支上开发了一半,忽然又需要去master上改个需求或者bug,这时候该当如何呢?

在这个场景下,我查找到了两种方式:

及时commit代码

dev分支上把已经完成的部分commit后,不push,然后切换到master分支,改完后再commit

使用 git stash

有时候,在dev分支上写的代码,没有编译通过,就需要切换到master分支, 在这种情况下(代码还没有经过测试通过,还无法commit)可以使用git stash

  • 保存dev当前的修改

    在命令行输入:

    git stash //会生成一个hash值作为版本标志
    

    或者

    git stash save "修改的信息" //会将`修改的信息`作为版本标志
    

    这样你的代码就回到了上一个commit了。接下来就可以切换到master分支了。

  • 返回到dev分支

    当修改完master分支后,可以通过

    git stash pop //将栈中的最后一个取出来
    

    或者

    git stash list //可以看到所有的版本信息
    

    然后选择列表项,执行

    git stash apply stash@{0} //git stash apply stash@{0}的作用是可以指定栈中的一个版本