git切换分支时,如何保存当前分支的修改(暂时不想提交)

git切换分支时,如何保存当前分支的修改(暂时不想提交)

下面是我自己的理解

暂且将当前分支称为a分支,即将切换的分支称为b分支

  1. 若a分支修改一半,并不着急提交,且需要到b分支上修改开发时,我们可以选择git stash ,git pull 将a分支的修改暂存到堆栈区中,然后切换到b分支进行开发,然后切换到a分支继续开发,释放堆栈中的保存的文件有以下两种

    1. git stash pop 这种方法是直接将堆栈中的文件释放出来,并且删除堆栈中的文件

    2. git stash apply 这种方法是将堆栈中的东西恢复出来,但是堆栈中还保留,这种方法比较保守,但同时也比较安全。

      git stash pop和git stash apply 使用哪一种比较好呢?视情况而定

      直接使用git stash pop 属于简单粗暴,也不是不可以,大部分情况下都没事,但是如果你从b分支重新切换到a分支,在这期间,有人在a分支上更新并提交了代码并且包含你git stash 中的文件时,这个时候你再git stash pop 的时候就会很麻烦,会报错产生冲突,会让你开始合并区分,因为释放的文件是根据之前的版本修改的

      这个时候听着就很头疼,也很棘手,怎么办呢?就解决冲突呗~~

      还有个区别就是git stash list查看一下当前堆栈当中已经有的记录

      git stash pop 默认的是应用的栈顶的记录,也就是 stash@{0}

      git stash apply 可以自由选择我们想要应用的记录stash@{0},stash@{1},stash@{2}........

  2. 如果a分支修改的文件,b分支上也有且两个分支的文件源码是一样的

    ,是可以顺利切换过去的,不管是在工作树还是暂存区的直接切换过去都不会报错。

    注:这里的文件一样指的不仅仅是文件名而是包括文件里的内容,如两个分支中都有home.vue文件,若里面的代码不一样那么切换的时候也会报错

  3. 若a分支修改的文件在b分支上没有,就会有以下提示

若你继续选择(强制)切换分支,那么就会丢弃你本地所有修改的分支。

  1. 若a分支修改的多个文件,b分支有的有,有的没有,那么切换分支的时候也会有这样的提示,如果继续checkout,那么a分支上的所有修改也将会都被丢弃。

git stash:备份当前工作区内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前工作区内容保存到Git栈中
git pull:拉取服务器上当前分支代码
git stash pop:从Git栈中读取最近一次保存的内容,恢复工作区相关内容。同时,用户可能进行多次stash操作,需要保证后stash的最先被取到,所以用栈(先进后出)来管理;pop取栈顶的内容并恢复
git stash list:显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear:清空Git栈

posted @ 2022-04-21 19:45  张尊娟  阅读(2627)  评论(0编辑  收藏  举报