At 2008-07-02 12:01:35 -0700, gitster@pobox.com wrote:
But that imaginary "stash branch" command would always give you
the exact state you were in and creates a clean fork to finish
what you were doing, and continue.
Nice idea. Something as simple as the appended diff?
I reversed the stash/branch arguments so that one need specify only the
branch name. Playing with it a little, it feels very useful.
-- ams
diff --git a/git-stash.sh b/git-stash.sh
index 4938ade..d5ecd24 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -218,6 +218,21 @@ 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 $stash
+}
+
# Main command set
case "$1" in
list)@@ -264,6 +279,10 @@ pop)
drop_stash "$@"
fi
;;
+branch)
+ shift
+ apply_to_branch "$@"
+ ;;
*)
if test $# -eq 0
then