summaryrefslogtreecommitdiffstats
path: root/git-stash.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-07-14 00:16:09 +0200
committerJunio C Hamano <gitster@pobox.com>2008-07-14 00:16:09 +0200
commit671d3220359145edd1002dc0afe76bc5782597f3 (patch)
treed79dad70ad5ae378362aec6d4d3b1c8f12f02c60 /git-stash.sh
parentMerge branch 'sg/stash-k-i' (diff)
parentAdd a test for "git stash branch" (diff)
downloadgit-671d3220359145edd1002dc0afe76bc5782597f3.tar.xz
git-671d3220359145edd1002dc0afe76bc5782597f3.zip
Merge branch 'am/stash-branch'
* am/stash-branch: Add a test for "git stash branch" Implement "git stash branch <newbranch> <stash>"
Diffstat (limited to 'git-stash.sh')
-rwxr-xr-xgit-stash.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/git-stash.sh b/git-stash.sh
index 92531a2951..e4cb6c3e4b 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -233,6 +233,23 @@ drop_stash () {
git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash
}
+apply_to_branch () {
+ have_stash || die 'Nothing to apply'
+
+ test -n "$1" || die 'No branch name specified'
+ branch=$1
+
+ if test -z "$2"
+ then
+ set x "$ref_stash@{0}"
+ fi
+ stash=$2
+
+ git-checkout -b $branch $stash^ &&
+ apply_stash --index $stash &&
+ drop_stash $stash
+}
+
# Main command set
case "$1" in
list)
@@ -279,6 +296,10 @@ pop)
drop_stash "$@"
fi
;;
+branch)
+ shift
+ apply_to_branch "$@"
+ ;;
*)
if test $# -eq 0
then