Search code examples
windowsgitgit-stash

What is legacy-stash?


Today I ran git stash -h on my Windows box to get this response:

usage: git legacy-stash list [<options>]
   or: git legacy-stash show [<stash>]
   or: git legacy-stash drop [-q|--quiet] [<stash>]
   or: git legacy-stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
   or: git legacy-stash branch <branchname> [<stash>]
   or: git legacy-stash save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
                      [-u|--include-untracked] [-a|--all] [<message>]
   or: git legacy-stash [push [--patch] [-k|--[no-]keep-index] [-q|--quiet]
                       [-u|--include-untracked] [-a|--all] [-m <message>]
                       [-- <pathspec>...]]
   or: git legacy-stash clear

I beg your pardon? legacy-stash ? What is going on?


Solution

  • There is ongoing work to port the git stash and git rebase programs to be built-ins written in C. They are faster on all systems, but this work is especially valuable for Windows because the programs written in shell are much slower there than on Unix. However, we're still finding a small number of bugs and issues in this work, so this work isn't the default yet.

    Git for Windows (and as of 2.20, core Git) allows you to pick which version you'd like to use. Git for Windows calls the shell version legacy-stash. There's no need for alarm; that's just the version you've always been using, and when the built-in version is ready for production use, you'll be switched over automatically.