我们知道,git checkout [文件名] 这个命令是用来切换分支的。
但如果我们在当前分支上,对文件作了修改,只是提交到暂存区,这时候切换分支就会报错。
当前,我有两个分支“fix”和“master”,我们切换到“fix”分支上,对文件作出修改,然后提交到暂存区。
如下图:
如果我们在这时想切换到“master”分支,将会报错:
想正常切换分支,我们该怎么做:
我们可以看到,Git给出了相应的操作提示。
第一种“commit your changes”以及第二种“stash them”。
commit your changes:
这种方式是较为简单的一种,和提交到本地库没两样,用git commit -m “提交信息” [文件名] 该命令将文件提交后,就可以正常切换分支。
stash them:
分三步进行:
1.将文件暂存起来
2.再次切换回该分支后,将暂存文件拉回到工作区
3.拉回工作区的文件提交到本地库
先看第一步:
将文件暂存起来:git stash
执行该命令之后,当我们查看工作区时,文件返回到了修改之前的样子。此时就可以正常的切换分支。
可是暂存起来也不是个办法,总得彻彻底底的解决吧!
再看第二步:
当我们再次切换回当前分支时,要把暂存的文件拉回到工作区。如何做呢:
我们可以先用 git stash list 来查看暂存了哪些文件,之后根据需要,执行 git stash apply [email protected]{序号} 将文件拉回到工作区。这时Git会提醒我们需要提交文件到暂存区本地库。这就表示我们拉回到工作区成功了。
拉回之后还没有完,当我们用 git stash list 查看暂存文件时,还是会有记录。可我们明明将暂存的文件拉回了,应该没有该暂存文件了呀?
是的,那么我们就要删除这个没用的记录,以免造成麻烦:git stash drop [email protected]{之前拉回的序号}。再次查看暂存文件记录时,就没有了该记录。
其实,上述麻烦的步骤可以用 git stash pop [email protected]{序号} 代替,该命令不仅将暂存的文件拉回到工作区,同时也可以删除该文件的暂存记录,可以说是非常方便了。
最后第三步:
将工作区的文件提交。git add [文件名] 以及 git commit -m “提交信息” [文件名]
执行这两个命令即可