原因

当前分支内容的更改还在工作区或者暂存区(工作区和暂存区的内容更改在所有分支可见),也就是说当前分支的内容更改没有commit(提交),分为两种情况:

  1. 还在工作区,也就是说没有进行add操作
  2. 在暂存区,只进行了add操作而没有进行commit操作

解决办法

我设定当前分支名称为a,要切换的分支名称为b,解决办法有以下三种:

不操作

只切换分支,然后又切换回切换前的分支,也就是说只进行切换分支的操作,可以不用管a分支内容的更改

1
2
3
4
#切换到b分支
git branch b
#切换回a分支
git branch a

切换前提交

切换分支前先把当前分支的内容提交上去,这样切换后的分支就看不到a分支内容的更改了

1
2
3
4
5
6
#添加到暂存区
git add .
#提交到本地仓库
git commit -m "提交信息"
#切换到b分支
git branch b

储存内容的变更

储存当前分支内容的变更,也就是说把当前分支的内容更改储存起来,先使用add命令将内容的更改添加到暂存区

1
git add .

再使用stash命令储存

1
git stash

然后切换到b分支,此时是看不到a分支内容的更改的

1
git branch b

切换回a分支

1
git branch a

恢复储存的内容变更,pop表示恢复最近一次储存的内容变更并删除储存记录,如果是apply则只恢复不删除储存记录

1
git stash pop

到此已经完成了,下面的是储存记录的删除命令

删除储存记录使用git stash drop命令,直接执行则删除最近一条,加上记录的索引stash@{1}则删除指定的记录(第1条,从0开始计算,先使用git stash list查看所有储存记录)

image-20220420123132474