Partially Stashing Files in Git

Imagine that to run an app locally, you need to change a configuration file. No matter what branch you are currently on, this configuration file will need to remain the same. Let's call it config.js.

Now, you're working on a topic branch feature-a and have 2 edited files (a.html and a.css). You get interrupted and need to switch to topic branch feature-b.

Of course, you need to stash your changes. Unfortunately, that means all 3 changed files will get stashed. Once you're on feature-b, you'll need to edit config.js again to run the app locally. What a pain!

Fortunately, there is an easier way!

git stash push -m stash_message_goes_here a.html a.css

This command will stash only the files a.html and a.css leaving config.js in your working directory. Now, you can checkout feature-b and run the app locally.