有时候我们在一个分支中修改了部分文件,这时候,有个新的紧急任务,需要马上修改。一个好的想法是切换到一个新的分支,在新的分支上进行修改提交。可是这时候你使用git checkout new_branch时会提示错误信息:*
error: Your local changes to the following files would be overwritten by checkout:
config/database.php
Please commit your changes or stash them before you switch branches.
看到提示里有两种方法可以解决,第一种我们就不考虑,因为问题修改到一半,并不想现在提交。我们可以选择第二种方式,使用git stash命令。
- 将当前的修改暂存起来,使用命令
git stash
注意,这只能暂存已经tracked的文件,即已经提交过的文件,而新加的文件则还是不能暂存成功,需要加上另一个参数:
git stash --include-untracked
或者:git stash save -u
还有一个命令:
git stash --all
可以将未被跟踪过的和忽略的文件都储存起来,这个我没去试,待验证。
- 问题改完,再且回到分支,可以使用下面命令将暂存区的文件恢复出来
git stash pop
git stash pop 后面可以加具体的stash,通过git stash list查看所有的暂存:
使用
git stash pop stash@{1}
恢复具体的暂存区内容