At 2008-07-02 12:01:35 -0700, gitster@xxxxxxxxx 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html