Every developer needs an understanding of version control, and Git has become the de-facto version control standard. However, there's more to Git than a few simple commands. Our developers compiled their knowledge into a beginner’s Git class to help teach more about useful git commands.
There are two essential git commands to learn and apply:
- git stash, which makes a temporary, local save of your code
- git reset, which lets you tidy up your code before doing a commit
Git Stash
Git stash enables you to save your code without making a commitment. How is this useful?
How to use Git Stash
Stashing is like saving a temporary local commit to your branch. It’s not possible to push a stash to a remote repository, so a stash is just for your own personal use.
After running git stash
, your branch appears as it was when you made your last commit. Now, you can safely change branches without losing your code or having a messy commit.
You can reapply the stashed content by running git stash apply
. You can also apply a specific stash (if you have stashed more than once) by running git stash apply stash@{1}
(the ‘1’ denotes the second before the last stash).
If you decide not to commit your work once you have restored the stash, you can run git checkout
, which resets all uncommitted code.
Git Stash example
Picture the following scenario: You’ve already made three neat and tidy commits, but you also have some uncommitted code that’s quite messy; you won’t want to commit it without removing your debugging code first.
Then, for some reason, you suddenly need to attend to another task and have to switch branches. This can often happen if you are on your master branch, and you have forgotten to create a new branch for your feature. Run git stash, the uncommitted code disappears without being committed.
Here’s another example of how to use Git stash: say you have some new files, one of which has a bug. Leave all but the suspected bug file unstaged (code must be staged to be stashed), then you can stash that file and troubleshoot the issue. If the stashed file wasn’t the problem, you can restore the stash.
You can also carry over your stashed commits to a new feature branch or debugging branch by using git stash branch
.
Note that when you have applied a stash, the stash isn’t deleted. You can remove stashes individually by using git drop
{stash number}, or remove all stashes by using git stash clear
.
Git Reset
Git reset is a bit more confusing, especially when teaching new Git users. A soft reset should be reserved for a genuine mistake whereas a stash can be used to swap code in and out.
How to use Git Reset
To do this you can run git reset --soft HEAD~1
. This will reset the most recent commit, and you can reset back more than one commit by changing the number after ~ e.g. git reset --soft HEAD~2
.
How to undo a Git Reset
If you do find yourself in a situation where you’ve accidentally committed some messy code, you can do a “soft” reset. This means that the code appears as if it has not been committed yet. Then you can tidy up your code in your IDE before making a cleaner commit.
You can also perform a hard reset — git reset --hard HEAD~1
. This type of reset essentially erases your last commit. However, you should be very careful about performing hard resets, especially if you push your branch, as there is no way to restore your commit.
What’s next?
You can visit our Tiny GitHub repositories, and see how we use git commands in practice. The Github quickstart guide has even more information on setting up and using git commands if you need support starting out using git commands.