Blueprint by Tiny
Return to Tiny.cloud
Return to Tiny.cloudTry TinyMCE for Free
Search by

The essential git stash and git reset guide

Team Tiny

June 9th, 2021

Written by

Team Tiny

Category

Engineering

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 developer tools: Git Stash

Git stash enables you to save your code without making a commitment. How is this useful? 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.

When you run git stash, the uncommitted code disappears without being committed. 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. 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 developer Tools: 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. 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.

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. 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.

Developers
byTeam Tiny

Powering more than 40% of the world’s websites. Here to educate and empower the world through all things TinyMCE and more.

Related Articles

  • Engineering

    History in the Making: Developing the first WYSIWYG

    by Joe Robinson in Engineering
Subscribe for the latest insights served straight to your inbox every month.

Deploy TinyMCE in just 6 lines of code

Built to scale. Developed in open source. Designed to innovate.

Begin with your FREE API Key
Tiny Editor
Tiny logo
Privacy Policy - Terms of Use© 2021 Tiny Technologies Inc.TinyMCE® and Tiny® are registered trademarks of Tiny Technologies, Inc.

Products

  • TinyMCE
  • Tiny Drive
  • Customer Stories
  • Pricing