Master: git reset
In this video we'll learn some more advanced usages of
We saw in the init video how to use
git reset to undo commands like
git add and
However, we can also use reset to undo
git commit as well as undo all of our changes.
Let's take a look at undoing
To demonstrate this let's remove File 1 and commit that change.
git rm file-1.txt
git commit –m 'Removing file-1.txt'
When I run
git status I see the repository is in a clean state.
If I run
ls I see the file has also been deleted.
git reset, we undo the commit and place the changes back in the index.
Said another way, it resets the Git repository to its state right before the commit.
Let's demonstrate this by running:
git reset SHA^
(passing it the SHA followed by a caret)
We'll learn about the caret in Part 2. For now, what's important is that
git reset needs a reference to the SHA of the commit before the one we want to undo. So, we can suffix the SHA of the commit we want to undo with a caret to provide
git reset the correct reference.
If I run
git status I see the change to delete file again.
Now it's important to note
git reset did not completely undo the commit.
In this case the file is still deleted from the file system.
If I wanted to completely undo changes I can use the
Let's remake the commit so we can run
git reset again with the
So we'll the same Git commands again.
But this time, we'll run
git reset with the
--hard option and pass in the new commit SHA.
If we run
git status we see the current state is clean.
And if I run
ls we see the file exists.
You can use the
--hard option at any time to reset the current state back to its previously clean state.
So if I just made some changes and decided I wanted to discard them, I could simply run:
git reset --hard
However, be mindful
git reset --hard is a destructive command.
While we'll learn how to potentially undo such destructive commands in Everyday Git, there are no guarantees.
So anytime you add the
--hard option, its a good idea to reconfirm your intentions.