解决Git切换分支问题:Please commit your changes or stash them before you switch branches.

文章目录

1. 问题

  • 目前拉取一个分支修bug,此时上面又给派发了一个新的bug需要修复,新bug优先级较高,而正在处理的这个bug还没有解决完,也不能够提交。
  • 当我们正常使用Git切换分支时,会出现如下提示(请在切换分支之前提交您的更改或隐藏它们)
    Please commit your changes or stash them before you switch branches.
    

2. 解决

  1. 因为当前的分支dev 最初也是从master 分支上衍生出来的。而此时你要再从该分支上切换到其主分支。那么你需要先把该dev分支上的改动提交后才能切换,但是该dev分支上还没有完成全部的修改,你不想提交。那么此时你就要选择 stash (存放)它们(你在当前分支上改动的却没有提交commit的内容)。
    所以第一步,在当前分支上执行 git stash 命令。将当前分支存起来,id为 807be186826
    在这里插入图片描述
  2. 这时候再执行 git status 命令,显示没有东西需要提交,接着就可以在主分支master上创建并切换到新的分支去修复另一个Bug了。在这里插入图片描述
  3. 那修改完那个Bug也提交后,就该回到dev 分支上去继续修改那个未完成的Bug。
    执行 git checkout dev 切换到 dev 分支,这个时候执行 git status 命令仍旧显示没有东西需要提交。毕竟我们前边已经成功将dev上未提交的改动给“隐藏“了,这时,用 $ git stash list 命令去查看我们“存储”的列表。
    在这里插入图片描述

会发现id 为 807be186826 的储藏项目在列表中,我们需要将其恢复,有两个办法:

  1. 用 git stash apply 命令恢复,但是恢复后,stash内容并不删除,这时候再执行 $ git stash list 命令,id 为 807be186826 的储藏项目还会在列表中,你需要用 git stash drop 来删除;

注意: 如果有一个分支上多个 stash,如果需要恢复指定的 stash ,可以在命令尾部加id,如 $ git stash apply stash@{0},同样删除指定 stash 项目则执行如 $ git stash drop stash@{1} 。

  1. 用 git stash pop 命令,恢复的同时把 stash 存储列表的内容也删了。这时候再执行 git stash list 命令,id 为 807be186826 的储藏项目不会在列表中。

此时再查看 会发现之前的改动还存在,且执行 git status 就会继续显示该分支上有改动未提交。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值