Git-stash暂存区

stash介绍

git和svn在更新时有点区别:

svn从服务器pull文件时,如果文件有冲突,svn会自动帮你merge或者有冲突时会提示手动merge。

git如果本地有文件改动未提交、且该文件和服务器最新版本有冲突,pull更新会提示错误,无法更新。要么先commit自己的改动再pull,要么使用stash save后再pull。stash的好处是可以先将你的改动暂存到本地仓库中,随时可以取出来再用,但是不用担心提交文件时,把不想提交的改动也push到服务器上,因为stash save(Stash Changes)的内容不参与commit和push。

另外一种情况就是当我们在一个分支上工作未完成却又接到新任务,要在另一个分支下进行开发,而此时当前分支下的工作还未完成,由于新版的git下,新修改代码若是未add和commit,当我们切换分支时,新修改的代码就会同时转移到新分支下,而此时我又不想将未完成的代码进行commit,那么此时就可以使用git stash 将当前分支下新添加的代码存放到暂存区,然后切换到新分支下完成工作之后,再回到原分支取回代码。

stash命令

  • git stash [name] 通过此命令,能够将当前分支下的新添加部分添加到暂存区,name参数可设置保存到暂存区的名称
  • git stash list 通过此命令,查看当前文件下存在的所有的暂存代码
  • git stash pop 通过此命令,会将暂存区中最新的缓存代码取出,同时删除暂存区中的这份代码
  • git stash apply [name] 通过此命令,可将暂存区中指定name或者编码的缓存代码取出,这条命令执行之后,缓存代码仍存在。

IDEA中使用stash

本节介绍一下在IDEA中暂存(stash)和取出(unstash)是怎么操作的。

  1. 先从git上pull(拉)代码。
    我们本地进行了一些代码编辑,新增了红框部分的内容。
  1. 使用git的stash Changes功能。
  1. 查看本地代码变化,可以看到自己新加的方法没有了,又回到了从git上pull下来的最新状态。此时如果要从git上重新pull就不会有冲突,或者commit一些已经完成的功能代码也不会把刚才新加的代码提交到git上。
  1. 查看git的UnStash Changes功能。

点击上图view,可以对比代码,点击 apply stash 按钮,可以将stash的代码恢复到本地。

------ 本文完 ------