How can I stash a specific file leaving the others currently modified out of the stash I am about to save?
For example, if git status gives me this:
younker % gst
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/controllers/cart_controller.php
# modified: app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")
and I only want to stash app/views/cart/welcome.thtml, how would I do that? Something like (but of course this does not work):
git stash save welcome_cart app/views/cart/welcome.thtml
Best Answer
EDIT: Since git 2.13, there is a command to save a specific path to the stash:
git stash push <path>
. For example:OLD ANSWER:
You can do that using
git stash --patch
(orgit stash -p
) -- you'll enter interactive mode where you'll be presented with each hunk that was changed. Usen
to skip the files that you don't want to stash,y
when you encounter the one that you want to stash, andq
to quit and leave the remaining hunks unstashed.a
will stash the shown hunk and the rest of the hunks in that file.Not the most user-friendly approach, but it gets the work done if you really need it.