TLDR:
You can specify a custom message when stashing changes in Git.
$ git stash save trying out a new pagination gem
$ git stash list
stash@{0}: On test_branch: trying out a new pagination gem
stash@{1}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{2}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{3}: WIP on master: 0e1e289 Update company_intro_to_qa.md
Hello. The default git stash information is a bit unwieldy. If you use stash regularly and create multiple stashes, viewing them with git stash list
can end up being rather unuseful.
git stash list
stash@{0}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{1}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
This is the default information provided about a stash:
-
Its stash reference number
-
That it’s a Work in Progress
-
Which branch it’s against
-
The most recent commit it’s working against
As a prolific stash-er, I would regularly have work stashed against different branches (easy to find in the stash list!) but if I had multiple stashes against a single branch, or worse, against a single commit, there was no way to tell which was which.
stash@{0}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{1}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{2}: WIP on master: 0e1e289 Update company_intro_to_qa.md
But surely, they’re in reverse chronological order?
This is only true until I git stash pop stash@{1}
(or worse, git stash apply stash@{1}
) in which case, I'd end up with this:
stash@{0}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{1}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{2}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{3}: WIP on master: 0e1e289 Update company_intro_to_qa.md
stash@{0}
and stash@{2}
are actually identical, while stash@{1}
is different, but I have no way to know that.
I COULD go through and view the diff's of each stash, but it'd be much easier if I could tell at a glance which stash was which.
Enter git stash save add your message here
git stash save trying out a new pagination gem
stash@{0}: On test_branch: trying out a new pagination gem
stash@{1}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{2}: WIP on test_branch: 2401cf1 Update company_intro_to_qa.md
stash@{3}: WIP on master: 0e1e289 Update company_intro_to_qa.md
Much better. The WIP is removed as it's unnecessary but the branch I was working on remains. I don't need to know which commit it was against and instead have my custom message, making scanning through git stash list
much easier.
Previously from our Engineering Team:
Avoiding N+1 queries in Rails GraphQL APIs by Andy West