git切换分支时,如何保存当前分支的修改(暂时不想提交)
git切换分支时,如何保存当前分支的修改(暂时不想提交)
下面是我自己的理解
暂且将当前分支称为a分支,即将切换的分支称为b分支
-
若a分支修改一半,并不着急提交,且需要到b分支上修改开发时,我们可以选择git stash ,git pull 将a分支的修改暂存到堆栈区中,然后切换到b分支进行开发,然后切换到a分支继续开发,释放堆栈中的保存的文件有以下两种
-
git stash pop 这种方法是直接将堆栈中的文件释放出来,并且删除堆栈中的文件
-
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}........
-
-
如果a分支修改的文件,b分支上也有且两个分支的文件源码是一样的
,是可以顺利切换过去的,不管是在工作树还是暂存区的直接切换过去都不会报错。
注:这里的文件一样指的不仅仅是文件名而是包括文件里的内容,如两个分支中都有home.vue文件,若里面的代码不一样那么切换的时候也会报错
-
若a分支修改的文件在b分支上没有,就会有以下提示
若你继续选择(强制)切换分支,那么就会丢弃你本地所有修改的分支。
- 若a分支修改的多个文件,b分支有的有,有的没有,那么切换分支的时候也会有这样的提示,如果继续checkout,那么a分支上的所有修改也将会都被丢弃。
git stash:备份当前工作区内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前工作区内容保存到Git栈中
git pull:拉取服务器上当前分支代码
git stash pop:从Git栈中读取最近一次保存的内容,恢复工作区相关内容。同时,用户可能进行多次stash操作,需要保证后stash的最先被取到,所以用栈(先进后出)来管理;pop取栈顶的内容并恢复
git stash list:显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear:清空Git栈
本文作者:张尊娟
本文链接:https://www.cnblogs.com/wszzj/p/16175740.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步