git stash -- common usage

开发中当处于一个 branch 的时候, 需要切换 branch 但不想 commit , or 需要在当前 branch 暂时搁置当前修改, 处理一些紧急事件的时候. 这时候会发现 git stash 是一个非常好, 非常实用的命令.

用法如下:

将当前未提交的文件全部加进stash暂存: 

git stash

执行完毕之后, 你的工作区将会是clean的, 我们在这里做一次pull --rebase的操作确保获取的是最新的代码之后, 就可以开始修改代码了 . 

当紧急事件处理完毕->commit->push之后, 执行:

git stash pop

或者

git stash apply

就可以恢复我们刚刚放进stash区的未提交代码, 恢复后处于未提交状态, 也不是stage状态, 除非在stash之前先做了 git add 操作.

 

一些高级用法:

上面所说的 pop 和 apply 命令可以恢复上一次stash操作时放进stash区的代码.

那么要恢复某一次stash操作暂存的代码怎么办呢?

 

首先, 我们需要查看stash暂存区的每一次stash记录:

git stash list

查询出来的结果是类似这样的:

1 stash@{0}: WIP on branchA: 5049768 commit4: 3.0dev compact bug fix
2 stash@{1}: WIP on branchA: d08a0ad commit3: 3.0dev compact bug fix
3 stash@{2}: WIP on branchA: d08a0ad commit2: 3.0dev compact bug fix
4 stash@{3}: WIP on branchA: 2ce95c1 commit1: 3.0dev compact bug fix

这时候如果我需要回到branchA中commit2这一次提交之后做的修改, 

使用如下命令:

git stash apply stash@{2}

如果我发现其中stash ID 为 stash@{3} 的这一次修改我不想要了, 

使用如下命令:

git stash drop stash@{3}

当我们完成一个阶段的工作的时候, 所有stash区里的代码都已经  commit 并且 push 了, 此时留着那些缓存也没什么用处, 那就清理下stash区吧, 

使用如下命令:

git stash clear

 

以上差不多就是git stash的一些常用的命令. 日常开发中使用完全够用了.

 

posted @ 2014-04-14 11:21  randzhao  阅读(400)  评论(0编辑  收藏  举报