diff --git a/README.md b/README.md
index 86fce0b0..e253b47a 100644
--- a/README.md
+++ b/README.md
@@ -199,6 +199,20 @@ within these Python versions are searched by specified order.
$ pyenv which python
/home/yyuu/.pyenv/versions/2.7.3/bin/python
+You can manage your version stack by `pyenv push` and `pyenv pop`.
+
+ $ pyenv global
+ 2.7.3
+ 3.2.3
+ $ pyenv push 3.3.0
+ $ pyenv global
+ 2.7.3
+ 3.2.3
+ 3.3.0
+ $ pyenv pop
+ 2.7.3
+ 3.2.3
+
### 3.2 pyenv local
Sets a local per-project Python version by writing the version name to
@@ -228,6 +242,20 @@ within these Python versions are searched by specified order.
$ pyenv which python
/home/yyuu/.pyenv/versions/2.7.3/bin/python
+You can manage your version stack by `pyenv push` and `pyenv pop`.
+
+ $ pyenv local
+ 2.7.3
+ 3.2.3
+ $ pyenv push 3.3.0
+ $ pyenv local
+ 2.7.3
+ 3.2.3
+ 3.3.0
+ $ pyenv pop
+ 2.7.3
+ 3.2.3
+
### 3.3 pyenv shell
Sets a shell-specific Python version by setting the `PYENV_VERSION`
diff --git a/libexec/pyenv-sh-pop b/libexec/pyenv-sh-pop
new file mode 100755
index 00000000..944422d3
--- /dev/null
+++ b/libexec/pyenv-sh-pop
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+set -e
+[ -n "$PYENV_DEBUG" ] && set -x
+
+IFS=: versions=($(pyenv-version-name))
+
+length="${#versions[@]}"
+PYENV_VERSION_NAMES=()
+for ((i=0; i