ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 2.5 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://kodekloud.com/blog/git-uncommit-last-commit/ |
| Last Crawled | 2026-01-26 22:14:47 (2 months ago) |
| First Indexed | 2023-05-24 06:38:19 (2 years ago) |
| HTTP Status Code | 200 |
| Meta Title | How to Uncommit Last commit in Git (5 Scenarios) |
| Meta Description | Learn how to uncommit the last commit in Git with our comprehensive guide. We cover 5 different scenarios that you will often encounter. |
| Meta Canonical | null |
| Boilerpipe Text | Highlights
Git commits act as project snapshots that help you track progress and roll back changes when needed.
Git offers different reset options depending on whether you want to keep changes staged, unstaged, or discard them completely.
git reset --soft HEAD~1
 removes the commit but keeps all changes and staging intact.
git reset HEAD~1
 removes the commit and unstages files but keeps changes in the working directory.
git reset --hard HEAD~1
 removes the commit and discards all changes permanently.
For commits already pushed to a remote repository, useÂ
git revert <commit_hash> --no-edit
 to safely undo changes without rewriting history.
Multiple commits can be undone at once usingÂ
git reset --soft HEAD~N
.
Best practices like checking status, reviewing changes, and using meaningful commit messages help avoid Git mistakes.
Have you ever wished you could turn back time and undo some erroneous implementations or features on your application’s code? Well, if you are a Git user, you are in luck. Git is a wonderful tool that lets you do exactly that: undo your mistakes and restore your project to a previous state.
Git
is a version control system that helps you manage your code and collaborate with others.
In this article, you will learn what a Git commit is and how to restore to a previous version in Git, depending on what you want to achieve. By the end of this article, you will be able to fix your blunders and get your project back on track.
Key Takeaways
To undo the act of committing but keep your changes and staging intact, use
git reset --soft HEAD
.
To undo the act of committing and also unstage your changes but keep your files intact, use
git reset HEAD
.
To undo everything, including discarding your changes and resetting your files to the previous commit, use
git reset --hard HEAD
. To undo a commit that you have already pushed to a remote branch, use
git revert <commit_hash> --no-edit
.
For visual learners, we've created this comprehensive video overview:
What are Commits in Git?
Git allows you to create snapshots of your project called commits. Each commit records what files you have changed, added, or deleted and also includes a message that explains why you made the change.
Commits are like checkpoints. They help you keep track of your progress and let you go back to a previous level if you mess up or want to try something different. However, sometimes, you may create a commit that you regret later.
For example, you may have committed a file that has a bug, contains sensitive data, or is too large to upload to GitHub.
Try the Git Remote Repository Lab for free:
Git Remote Repository Lab
In this section, we will discuss five different scenarios for undoing the last commit in Git, each with a different approach depending on whether you want to keep your changes and staging intact, completely remove the last commit and its changes, or even revert your changes after pushing to a remote repository.
Scenario 1: Undo the act of committing, But Keep Your Changes and Staging Intact
Let’s say you have made some changes to your project and staged them using the
git add
command. You are ready to commit them, so you type
git commit -m "Added awesome feature"
and hit enter.
But then you realize that you forgot to do something important, like adding a comment or fixing a typo.
You want to undo your commit, but you don’t want to lose your changes or your staging. What do you do?
The answer is simple: use the
git reset --soft HEAD~1
command. This command will undo your last commit, but it will keep your changes and your staging intact. It will move the HEAD pointer (which points to the latest commit on your current branch) to the previous commit. However, it will not touch the index (which stores the staged files) or the working tree (which contains the modified files).
In Git, the tilde symbol (~) is a shorthand notation used to refer to the parent commit of a particular commit.
For example, if you want to refer to the immediate parent commit of the current commit, you can use the tilde symbol followed by the number 1, like this:
HEAD~1
. The 1 in this command specifies the number of steps or uncommits we want to do.
Here is an example of using this command. Suppose you have a project with two files: hello.py and README.md. You make some changes to both files and stage them using git add. Then you commit them using
git commit -m "Added hello world"
. To see the history of your commits, run this command:
git log --oneline
Now you realize that you made a mistake in hello.py, and you want to undo your commit. You can run the following command:
git reset --soft HEAD~1
Scenario 2: Undo the Act of Committing and Also Unstage Your Changes, But Keep Your Files Intact
Assume that you have made some changes to your project and committed them.
But then you realize that you don’t want to commit those changes at all. You want to undo your commit and also unstage your changes, but you don’t want to lose your files.
To do that, run the following command.
git reset HEAD~1
This command will undo your last commit and also unstage your changes, but it will keep your files intact. It will move the HEAD pointer to the previous commit, and it will also reset the index to match the HEAD.
However, it will not touch the working tree, which means your files will remain as they were before.
Scenario 3: Undo Everything, including Discarding Your Changes and Resetting Your Files to the Previous Commit
Assume you made some changes to your project, staged, and committed them. But then you realize that you made a huge mistake and want to undo everything. You want to discard your changes and reset your files to the previous commit.
To achieve that, run the following command:
git reset --hard HEAD~1
This command will undo your last commit, discard your changes, and reset your files to the previous commit. It will move the HEAD pointer to the previous commit, and it will also reset the index and the working tree to match the HEAD. This means that any changes you have made since the last commit will be erased permanently.
Here is an example:
This tells you that the current branch is now pointing to the commit with the hash
1a6fd59
, which has the message
Added hello.py
Scenario 4: Undo A Commit That You Have Already Pushed to A Remote Branch
Assume you made some changes to your project, staged, committed, and pushed them to a remote branch.
But then you realize that you don’t want to share those changes with others or merge them into the main branch. You want to undo your commit and remove it from the remote branch. To achieve that, run the following command:
git revert <commit_hash> --no-edit
This command will undo your commit by creating a new commit that reverses the changes of the previous commit. It will not delete or modify the previous commit, but it will apply the opposite changes to your files. Then, you can push the new commit to the remote branch using git push origin main.
Suppose you still have a project with two files: hello.py and README.md. You make some changes to both files and then push them to a remote branch. To see the history of your commits on both local and remote branches, you can run the following command:
git log --oneline --all --graph
Now you realize that you don’t want to share those changes with others or merge them to the main branch. You can use
git revert <commit_hash> --no-edit
to undo your commit and create a new commit that reverses the changes of the previous commit. You need to specify the hash of the commit you want to undo, which is
d78f32b
in my case:
You can see that there is a new commit with the message "Revert 'Added hello.py'" that reverses the changes of the previous commit. You can also use
git diff HEAD
to see what changes were made by the revert.
You can now push the new commit to the remote branch using
git push <remote folder name> main
. To verify that the commit has been created, run the following command:
git log --oneline --all --graph
You can see that the branch has been updated with the new revert commit.
The Advantages of This Approach
This approach offers the following benefits:
You can undo your last commit and remove it from the remote branch without deleting or modifying it.
You can create a new commit that reverses the changes of the previous commit and keeps your history consistent.
You can share your revert with others and avoid merging unwanted changes to the main branch.
The Drawbacks of This Approach
Below is the drawback of using this approach:
You can only undo one commit at a time. If you want to undo multiple commits, you have to repeat the command.
You have to use the commit hash to specify which commit you want to undo. You can use
git log --oneline
to find the hash or use a relative reference like HEAD^ to refer to the last commit.
Scenario 5: Undo Several Commits and Move More Than One Step Back
Sometimes, it's not enough to simply undo your most recent commits; you might find yourself needing to revert back to more than just one commit. Suppose you’re using the
git reset --soft HEAD
command, but wish to go back three commits.
To achieve this, run the following command, replacing N with the number of uncommits you want to perform:
git reset --soft HEAD~N
In this case, the command would be:
git reset --soft HEAD~3
This command moves the HEAD pointer back by 3 commits while keeping your changes and staging intact.
After running the command, you will be positioned at the commit you specified, with the changes from the subsequent commits unstaged.
Tips and Best Practices to Avoid or Minimize Mistakes In Git
It is important to be careful when using Git commands, as some of them can overwrite or erase your work permanently.
Below are tips that will minimize your mistakes in Git.
Before committing anything, always check the status of your repository using
git status
and review the changes you have made using
git diff
or
git diff --staged
.
Before pushing anything to a remote branch, always check the history of your commits using
git log --oneline
or
git log --oneline --all --graph
and make sure that everything is as expected.
Before using any destructive commands like
git reset --hard
or
git push --force
, always make a backup or a copy of your repository somewhere else. You can also use
git reflog
to see the history of your actions and recover lost commits.
Use meaningful and descriptive commit messages that explain what and why you have changed something. Avoid using vague or generic messages like “Update files” or “Fix bug.”
Use branches and pull requests to organize your work and collaborate with others. Avoid working directly on the main branch or pushing untested or unfinished code to a remote branch.
Master Git with our
Git for Beginners
course:
GIT for Beginners Course | KodeKloud
The course covers how to get started with Git, useful Git commands, the internals of Git, and how it’s actually working under the hood. It also comes with hands-on labs to help you internalize concepts and commands covered in each lecture.
Also, check out the
Git cheat sheet
for more information.
Conclusion
In this article, you have learned how to uncommit your last commit in Git, depending on what you want to achieve. You have also seen how to uncommit several commits at once. To make the most out of Git, ensure you adhere to the best practices discussed in the previous section.
More on DevOps:
How to Push Git Tags to Remote
How to Undo git add - Removing Added Files in Git
How to Change Remote Origin in Git
How to Change Commit Message in Git
Git detached head: What is it & How to fix it
Top 15 DevOps Automation Tools You Should Learn in 2024
10 Essential DevOps Tools You Should Learn in 2024
17 DevOps Monitoring Tools to Learn in 2024
FAQs
Q1: What is the difference betweenÂ
HEAD~1
 andÂ
HEAD^
?
Both point to the parent commit of the current commit, but:
HEAD~1
 strictly means "one commit before HEAD."
HEAD^
 refers to theÂ
first parent
, which matters in merge commits (they have two parents).
So, in merge commits,Â
HEAD~1
 andÂ
HEAD^
 may not behave the same.
Q2: Can I undo a commit without touching other people’s work on the same branch?
Yes - the safest option isÂ
git revert
, because it creates a new commit that undoes the unwanted changes without rewriting shared history.
Avoid usingÂ
git reset
 on shared branches.
Q3: What if I want to recover a commit after accidentally runningÂ
git reset --hard
?
You can often recover it using:
git
reflog
Reflog shows the history of where HEAD pointed, allowing you to restore "lost" commits by resetting back to an earlier reflog entry.
Q4: Should I useÂ
git push --force
 after resetting my branch?
Only if:
YouÂ
fully understand
 that you are rewriting public branch history
No one else is depending on that branch
Otherwise, useÂ
git push --force-with-lease
, which is safer because it prevents overwriting others’ work. |
| Markdown | [Skip to Sidebar](https://kodekloud.com/blog/git-uncommit-last-commit/#sidebar) [Skip to Content](https://kodekloud.com/blog/git-uncommit-last-commit/#content)
[ ](http://kodekloud.com/)
Search
Anonymous
***
- Theme: Light Theme: System Theme: Dark
- [Sign in](https://identity.kodekloud.com/sign-in)
- [Dashboard](https://kodekloud.com/dashboard/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=dashboard)
- [Business](https://kodekloud.com/business/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=business_page)
- [Pricing](https://kodekloud.com/pricing/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=pricing_page)
- [Playgrounds](https://kodekloud.com/pages/playgrounds?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=playgrounds_page)
- [Learning Paths](https://kodekloud.com/learning-path-devops-basics/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=learning_paths)
- [Contact Us](https://kodekloud.com/contact-us/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=contact_us)
[Tags](https://kodekloud.com/tags/)
- [DevOps](https://kodekloud.com/blog/tag/devops/)
- [Kubernetes](https://kodekloud.com/blog/tag/kubernetes/)
- [Docker](https://kodekloud.com/blog/tag/docker/)
- [Linux](https://kodekloud.com/blog/tag/linux/)
- [DevOps](https://kodekloud.com/blog/tag/devops/)
- [Kubernetes](https://kodekloud.com/blog/tag/kubernetes/)
- [Docker](https://kodekloud.com/blog/tag/docker/)
- [Linux](https://kodekloud.com/blog/tag/linux/)
- [X](https://x.com/kodekloud1)
- [Facebook](https://www.facebook.com/kodekloudtraining)
© 2026 DevOps Blog - Published with [Ghost](https://ghost.org/) & [Aspect](https://www.priority.vision/themes/aspect/)
# How to Uncommit Last commit in Git (5 Scenarios)
- [](https://kodekloud.com/blog/author/nimesha/)
by [Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
- •
- May 22, 2023
- •
- 10 min read
Comments
Share
- [Share on X](https://x.com/intent/tweet?url=https%3A%2F%2Fkodekloud.com%2Fblog%2Fgit-uncommit-last-commit%2F&text=How%20to%20Uncommit%20Last%20commit%20in%20Git%20\(5%20Scenarios\))
- [Share on Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fkodekloud.com%2Fblog%2Fgit-uncommit-last-commit%2F"e=How%20to%20Uncommit%20Last%20commit%20in%20Git%20\(5%20Scenarios\))
- [Share on LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fkodekloud.com%2Fblog%2Fgit-uncommit-last-commit%2F&summary=How%20to%20Uncommit%20Last%20commit%20in%20Git%20\(5%20Scenarios\))
- [Share on Pinterest](https://www.pinterest.com/pin/create/button/?url=https%3A%2F%2Fkodekloud.com%2Fblog%2Fgit-uncommit-last-commit%2F&description=How%20to%20Uncommit%20Last%20commit%20in%20Git%20\(5%20Scenarios\))
- [Email](https://kodekloud.com/cdn-cgi/l/email-protection#80bff3f5e2eae5e3f4bdc8eff7a5b2b0f4efa5b2b0d5eee3efedede9f4a5b2b0cce1f3f4a5b2b0e3efedede9f4a5b2b0e9eea5b2b0c7e9f4a5b2b0a8b5a5b2b0d3e3e5eee1f2e9eff3a9a6e2efe4f9bde8f4f4f0f3a5b3c1a5b2c6a5b2c6ebefe4e5ebeceff5e4aee3efeda5b2c6e2ecefe7a5b2c6e7e9f4adf5eee3efedede9f4adece1f3f4ade3efedede9f4a5b2c6)
- Copy link
[Sign up](https://identity.kodekloud.com/registration)
## Join 1M+ Learners
Learn & Practice DevOps, Cloud, AI, and Much More — All Through Hands-On, Interactive Labs\!
[Create Your Free Account](https://identity.kodekloud.com/registration)

Uncommit Last commit in Git
- [Git](https://kodekloud.com/blog/tag/git/)
- [Git commands](https://kodekloud.com/blog/tag/git-commands/)
- [Git for beginners](https://kodekloud.com/blog/tag/git-for-beginners/)
#### Highlights
- Git commits act as project snapshots that help you track progress and roll back changes when needed.
- Git offers different reset options depending on whether you want to keep changes staged, unstaged, or discard them completely.
- `git reset --soft HEAD~1` removes the commit but keeps all changes and staging intact.
- `git reset HEAD~1` removes the commit and unstages files but keeps changes in the working directory.
- `git reset --hard HEAD~1` removes the commit and discards all changes permanently.
- For commits already pushed to a remote repository, use `git revert <commit_hash> --no-edit` to safely undo changes without rewriting history.
- Multiple commits can be undone at once using `git reset --soft HEAD~N`.
- Best practices like checking status, reviewing changes, and using meaningful commit messages help avoid Git mistakes.
Have you ever wished you could turn back time and undo some erroneous implementations or features on your application’s code? Well, if you are a Git user, you are in luck. Git is a wonderful tool that lets you do exactly that: undo your mistakes and restore your project to a previous state. [Git](https://git-scm.com/?ref=kodekloud.com) is a version control system that helps you manage your code and collaborate with others.
In this article, you will learn what a Git commit is and how to restore to a previous version in Git, depending on what you want to achieve. By the end of this article, you will be able to fix your blunders and get your project back on track.
## Key Takeaways
- To undo the act of committing but keep your changes and staging intact, use `git reset --soft HEAD`.
- To undo the act of committing and also unstage your changes but keep your files intact, use `git reset HEAD`.
- To undo everything, including discarding your changes and resetting your files to the previous commit, use `git reset --hard HEAD`. To undo a commit that you have already pushed to a remote branch, use `git revert <commit_hash> --no-edit`.
**For visual learners, we've created this comprehensive video overview:**
## What are Commits in Git?
Git allows you to create snapshots of your project called commits. Each commit records what files you have changed, added, or deleted and also includes a message that explains why you made the change.
Commits are like checkpoints. They help you keep track of your progress and let you go back to a previous level if you mess up or want to try something different. However, sometimes, you may create a commit that you regret later.
For example, you may have committed a file that has a bug, contains sensitive data, or is too large to upload to GitHub.
*Try the Git Remote Repository Lab for free:*
[](https://kode.wiki/3T5pQnV?ref=kodekloud.com)
**Git Remote Repository Lab**
## How to Uncommit Last commit in Git
In this section, we will discuss five different scenarios for undoing the last commit in Git, each with a different approach depending on whether you want to keep your changes and staging intact, completely remove the last commit and its changes, or even revert your changes after pushing to a remote repository.
### Scenario 1: Undo the act of committing, But Keep Your Changes and Staging Intact
Let’s say you have made some changes to your project and staged them using the `git add` command. You are ready to commit them, so you type `git commit -m "Added awesome feature"` and hit enter.
But then you realize that you forgot to do something important, like adding a comment or fixing a typo.
You want to undo your commit, but you don’t want to lose your changes or your staging. What do you do?
The answer is simple: use the `git reset --soft HEAD~1` command. This command will undo your last commit, but it will keep your changes and your staging intact. It will move the HEAD pointer (which points to the latest commit on your current branch) to the previous commit. However, it will not touch the index (which stores the staged files) or the working tree (which contains the modified files).
In Git, the tilde symbol (~) is a shorthand notation used to refer to the parent commit of a particular commit.
For example, if you want to refer to the immediate parent commit of the current commit, you can use the tilde symbol followed by the number 1, like this: `HEAD~1`. The 1 in this command specifies the number of steps or uncommits we want to do.
Here is an example of using this command. Suppose you have a project with two files: hello.py and README.md. You make some changes to both files and stage them using git add. Then you commit them using `git commit -m "Added hello world"`. To see the history of your commits, run this command:
```
git log --oneline
```

Now you realize that you made a mistake in hello.py, and you want to undo your commit. You can run the following command:
```
git reset --soft HEAD~1
```
### Scenario 2: Undo the Act of Committing and Also Unstage Your Changes, But Keep Your Files Intact
Assume that you have made some changes to your project and committed them.
But then you realize that you don’t want to commit those changes at all. You want to undo your commit and also unstage your changes, but you don’t want to lose your files.
To do that, run the following command.
```
git reset HEAD~1
```
This command will undo your last commit and also unstage your changes, but it will keep your files intact. It will move the HEAD pointer to the previous commit, and it will also reset the index to match the HEAD.
However, it will not touch the working tree, which means your files will remain as they were before.
### Scenario 3: Undo Everything, including Discarding Your Changes and Resetting Your Files to the Previous Commit
Assume you made some changes to your project, staged, and committed them. But then you realize that you made a huge mistake and want to undo everything. You want to discard your changes and reset your files to the previous commit.
To achieve that, run the following command:
```
git reset --hard HEAD~1
```
This command will undo your last commit, discard your changes, and reset your files to the previous commit. It will move the HEAD pointer to the previous commit, and it will also reset the index and the working tree to match the HEAD. This means that any changes you have made since the last commit will be erased permanently.
Here is an example:

This tells you that the current branch is now pointing to the commit with the hash **1a6fd59**, which has the message **Added hello.py**
### Scenario 4: Undo A Commit That You Have Already Pushed to A Remote Branch
Assume you made some changes to your project, staged, committed, and pushed them to a remote branch.
But then you realize that you don’t want to share those changes with others or merge them into the main branch. You want to undo your commit and remove it from the remote branch. To achieve that, run the following command:
```
git revert <commit_hash> --no-edit
```
This command will undo your commit by creating a new commit that reverses the changes of the previous commit. It will not delete or modify the previous commit, but it will apply the opposite changes to your files. Then, you can push the new commit to the remote branch using git push origin main.
Suppose you still have a project with two files: hello.py and README.md. You make some changes to both files and then push them to a remote branch. To see the history of your commits on both local and remote branches, you can run the following command:
```
git log --oneline --all --graph
```
Now you realize that you don’t want to share those changes with others or merge them to the main branch. You can use `git revert <commit_hash> --no-edit` to undo your commit and create a new commit that reverses the changes of the previous commit. You need to specify the hash of the commit you want to undo, which is **d78f32b** in my case:

You can see that there is a new commit with the message "Revert 'Added hello.py'" that reverses the changes of the previous commit. You can also use `git diff HEAD` to see what changes were made by the revert.
You can now push the new commit to the remote branch using `git push <remote folder name> main`. To verify that the commit has been created, run the following command:
```
git log --oneline --all --graph
```

You can see that the branch has been updated with the new revert commit.
#### The Advantages of This Approach
This approach offers the following benefits:
- You can undo your last commit and remove it from the remote branch without deleting or modifying it.
- You can create a new commit that reverses the changes of the previous commit and keeps your history consistent.
- You can share your revert with others and avoid merging unwanted changes to the main branch.
#### The Drawbacks of This Approach
Below is the drawback of using this approach:
- You can only undo one commit at a time. If you want to undo multiple commits, you have to repeat the command.
- You have to use the commit hash to specify which commit you want to undo. You can use `git log --oneline` to find the hash or use a relative reference like HEAD^ to refer to the last commit.
### Scenario 5: Undo Several Commits and Move More Than One Step Back
Sometimes, it's not enough to simply undo your most recent commits; you might find yourself needing to revert back to more than just one commit. Suppose you’re using the `git reset --soft HEAD` command, but wish to go back three commits.
To achieve this, run the following command, replacing N with the number of uncommits you want to perform:
```
git reset --soft HEAD~N
```
In this case, the command would be:
```
git reset --soft HEAD~3
```
This command moves the HEAD pointer back by 3 commits while keeping your changes and staging intact.
After running the command, you will be positioned at the commit you specified, with the changes from the subsequent commits unstaged.
## Tips and Best Practices to Avoid or Minimize Mistakes In Git
It is important to be careful when using Git commands, as some of them can overwrite or erase your work permanently.
Below are tips that will minimize your mistakes in Git.
- Before committing anything, always check the status of your repository using `git status` and review the changes you have made using `git diff` or `git diff --staged`.
- Before pushing anything to a remote branch, always check the history of your commits using `git log --oneline` or `git log --oneline --all --graph` and make sure that everything is as expected.
- Before using any destructive commands like `git reset --hard` or `git push --force`, always make a backup or a copy of your repository somewhere else. You can also use `git reflog` to see the history of your actions and recover lost commits.
- Use meaningful and descriptive commit messages that explain what and why you have changed something. Avoid using vague or generic messages like “Update files” or “Fix bug.”
- Use branches and pull requests to organize your work and collaborate with others. Avoid working directly on the main branch or pushing untested or unfinished code to a remote branch.
Master Git with our [Git for Beginners](https://learn.kodekloud.com/courses/git-for-beginners?ref=kodekloud.com) course:
[GIT for Beginners Course \| KodeKloud KodeKloud](https://learn.kodekloud.com/courses/git-for-beginners?ref=kodekloud.com)
The course covers how to get started with Git, useful Git commands, the internals of Git, and how it’s actually working under the hood. It also comes with hands-on labs to help you internalize concepts and commands covered in each lecture.
Also, check out the [Git cheat sheet](https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet?ref=kodekloud.com) for more information.
## Conclusion
In this article, you have learned how to uncommit your last commit in Git, depending on what you want to achieve. You have also seen how to uncommit several commits at once. To make the most out of Git, ensure you adhere to the best practices discussed in the previous section.
***
More on DevOps:
- [How to Push Git Tags to Remote](https://kodekloud.com/blog/how-to-push-git-tags-to-remote/)
- [How to Undo git add - Removing Added Files in Git](https://kodekloud.com/blog/how-to-undo-git-add-removing-added-files-in-git/)
- [How to Change Remote Origin in Git](https://kodekloud.com/blog/change-remote-origin-in-git/)
- [How to Change Commit Message in Git](https://kodekloud.com/blog/change-commit-message-in-git/)
- [Git detached head: What is it & How to fix it](https://kodekloud.com/blog/git-detached-head/)
- [Top 15 DevOps Automation Tools You Should Learn in 2024](https://kodekloud.com/blog/top-15-devops-automation-tools-you-should-learn-in-2024/)
- [10 Essential DevOps Tools You Should Learn in 2024](https://kodekloud.com/blog/10-essential-devops-tools-you-should-learn-in-2024/)
- [17 DevOps Monitoring Tools to Learn in 2024](https://kodekloud.com/blog/17-devops-monitoring-tools-to-learn-in-2024/)
## FAQs
#### Q1: What is the difference between `HEAD~1` and `HEAD^`?
Both point to the parent commit of the current commit, but:
- `HEAD~1` strictly means "one commit before HEAD."
- `HEAD^` refers to the **first parent**, which matters in merge commits (they have two parents).
So, in merge commits, `HEAD~1` and `HEAD^` may not behave the same.
#### Q2: Can I undo a commit without touching other people’s work on the same branch?
Yes - the safest option is ****git revert****, because it creates a new commit that undoes the unwanted changes without rewriting shared history.
Avoid using `git reset` on shared branches.
#### Q3: What if I want to recover a commit after accidentally running `git reset --hard`?
You can often recover it using:
`git` reflog
Reflog shows the history of where HEAD pointed, allowing you to restore "lost" commits by resetting back to an earlier reflog entry.
#### Q4: Should I use `git push --force` after resetting my branch?
Only if:
- You **fully understand** that you are rewriting public branch history
- No one else is depending on that branch
Otherwise, use `git push --force-with-lease`, which is safer because it prevents overwriting others’ work.
## Join 1M+ Learners
Learn & Practice DevOps, Cloud, AI, and Much More — All Through Hands-On, Interactive Labs\!
[Create Your Free Account](https://identity.kodekloud.com/registration)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
On this page
[Unlock full content](https://kodekloud.com/blog/git-uncommit-last-commit/#post-upgrade-cta)
[](https://kodekloud.com/mobile-app)
[ 6 min read](https://kodekloud.com/blog/top-myths-about-learning-cloud-skills/)
### [Top Myths About Learning Cloud Skills (and the Truth Behind Them)](https://kodekloud.com/blog/top-myths-about-learning-cloud-skills/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 26, 2026
• [Cloud](https://kodekloud.com/blog/tag/cloud/) • [Associate Cloud Engineer](https://kodekloud.com/blog/tag/associate-cloud-engineer/) • [Cloud Skills](https://kodekloud.com/blog/tag/cloud-skills/)
[ 11 min read](https://kodekloud.com/blog/kodekloud-cohorts-kubestronaut-golden-kubestronaut-aws-ai-practitioner/)
### [From Scattered Learning to Structured Growth: Inside KodeKloud Cohorts](https://kodekloud.com/blog/kodekloud-cohorts-kubestronaut-golden-kubestronaut-aws-ai-practitioner/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 20, 2026
• [cncf](https://kodekloud.com/blog/tag/cncf/) • [kubestronaut](https://kodekloud.com/blog/tag/kubestronaut/) • [golden kubestronaut](https://kodekloud.com/blog/tag/golden-kubestronaut/)
[ 7 min read](https://kodekloud.com/blog/why-kubernetes-is-a-must-know-for-modern-engineers/)
### [Why Kubernetes Is a Must-Know for Modern Engineers](https://kodekloud.com/blog/why-kubernetes-is-a-must-know-for-modern-engineers/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 19, 2026
• [Kubernetes](https://kodekloud.com/blog/tag/kubernetes/) • [Container orchestration](https://kodekloud.com/blog/tag/container-orchestration/) • [Kubernetes Administrator](https://kodekloud.com/blog/tag/kubernetes-administrator/)
[ 9 min read](https://kodekloud.com/blog/why-career-switchers-choose-tech-and-cloud-careers/)
### [Why Career Switchers Are Flocking to Tech & Cloud Roles](https://kodekloud.com/blog/why-career-switchers-choose-tech-and-cloud-careers/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 16, 2026
• [DevOps](https://kodekloud.com/blog/tag/devops/) • [Cloud](https://kodekloud.com/blog/tag/cloud/) • [Careers](https://kodekloud.com/blog/tag/careers/)
[ 10 min read](https://kodekloud.com/blog/how-to-change-hostname-on-linux-without-rebooting/)
### [How to Change Hostname on Linux (Without Rebooting)](https://kodekloud.com/blog/how-to-change-hostname-on-linux-without-rebooting/)
[](https://kodekloud.com/blog/author/alexandru/)
[Alexandru Andrei](https://kodekloud.com/blog/author/alexandru/)
[](https://kodekloud.com/blog/author/alexandru/)
[Alexandru Andrei](https://kodekloud.com/blog/author/alexandru/)
You can find Alexandru's tutorials on DigitalOcean, Linode, Alibaba Cloud. He believes the Linux ecosystem is simple, elegant, and beautiful. He's on a mission to help others discover this Linux world.
Jan 14, 2026
• [Linux](https://kodekloud.com/blog/tag/linux/) • [linux commands](https://kodekloud.com/blog/tag/linux-commands/) • [Command Line](https://kodekloud.com/blog/tag/command-line/)
[ 11 min read](https://kodekloud.com/blog/is-cloud-the-future-of-all-it-roles/)
### [Is Cloud the Future of All IT Roles?](https://kodekloud.com/blog/is-cloud-the-future-of-all-it-roles/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 14, 2026
• [Cloud](https://kodekloud.com/blog/tag/cloud/) • [AWS](https://kodekloud.com/blog/tag/aws/) • [Azure](https://kodekloud.com/blog/tag/azure/)
[ 16 min read](https://kodekloud.com/blog/what-makes-a-great-devops-engineer-2026/)
### [What Makes a Great DevOps Engineer - 2026 Edition](https://kodekloud.com/blog/what-makes-a-great-devops-engineer-2026/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 13, 2026
• [DevOps](https://kodekloud.com/blog/tag/devops/) • [Cloud-Native](https://kodekloud.com/blog/tag/cloud-native-2/) • [DevSecOps](https://kodekloud.com/blog/tag/devsecops/)
[ 10 min read](https://kodekloud.com/blog/how-to-run-sh-shell-scripts-in-linux-fix-command-not-found-permission-denied-errors/)
### [How to Run .sh Shell Scripts in Linux (Fix Command Not Found & Permission Denied Errors)](https://kodekloud.com/blog/how-to-run-sh-shell-scripts-in-linux-fix-command-not-found-permission-denied-errors/)
[](https://kodekloud.com/blog/author/alexandru/)
[Alexandru Andrei](https://kodekloud.com/blog/author/alexandru/)
[](https://kodekloud.com/blog/author/alexandru/)
[Alexandru Andrei](https://kodekloud.com/blog/author/alexandru/)
You can find Alexandru's tutorials on DigitalOcean, Linode, Alibaba Cloud. He believes the Linux ecosystem is simple, elegant, and beautiful. He's on a mission to help others discover this Linux world.
Jan 6, 2026
• [Linux](https://kodekloud.com/blog/tag/linux/) • [Command Line](https://kodekloud.com/blog/tag/command-line/) • [linux commands](https://kodekloud.com/blog/tag/linux-commands/)
[ 12 min read](https://kodekloud.com/blog/why-linux-fundamentals-are-the-foundation-of-every-devops-role/)
### [Why Linux Fundamentals Are the Foundation of Every DevOps Role](https://kodekloud.com/blog/why-linux-fundamentals-are-the-foundation-of-every-devops-role/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 5, 2026
• [Linux](https://kodekloud.com/blog/tag/linux/) • [Terminal](https://kodekloud.com/blog/tag/terminal/)
[ 10 min read](https://kodekloud.com/blog/devops-cloud-ai-skills-roadmap-2026/)
### [2026 Is Loading… A Smart DevOps, Cloud & AI Skills Roadmap](https://kodekloud.com/blog/devops-cloud-ai-skills-roadmap-2026/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
[](https://kodekloud.com/blog/author/nimesha/)
[Nimesha Jinarajadasa](https://kodekloud.com/blog/author/nimesha/)
Nimesha Jianrajadasa is a DevOps & Cloud Consultant, K8s expert, and instructional content strategist-crafting hands-on learning experiences in DevOps, Kubernetes, and platform engineering.
- [LinkedIn](https://www.linkedin.com/in/nimeshmhj)
Jan 2, 2026
• [DevOps](https://kodekloud.com/blog/tag/devops/) • [Cloud](https://kodekloud.com/blog/tag/cloud/) • [AI](https://kodekloud.com/blog/tag/ai/)
## Subscribe to Newsletter
Join me on this exciting journey as we explore the boundless world of web design together.
## Discussion
[Sign up](https://identity.kodekloud.com/registration)
[ ](http://kodekloud.com/)
- [Dashboard](https://kodekloud.com/dashboard/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=dashboard)
- [Business](https://kodekloud.com/business/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=business_page)
- [Pricing](https://kodekloud.com/pricing/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=pricing_page)
- [Playgrounds](https://kodekloud.com/pages/playgrounds?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=playgrounds_page)
- [Learning Paths](https://kodekloud.com/learning-path-devops-basics/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=learning_paths)
- [Contact Us](https://kodekloud.com/contact-us/?utm_source=blog.kodekloud.com&utm_medium=menu&utm_campaign=contact_us)
[Tags](https://kodekloud.com/tags/)
- [DevOps](https://kodekloud.com/blog/tag/devops/)
- [Kubernetes](https://kodekloud.com/blog/tag/kubernetes/)
- [Docker](https://kodekloud.com/blog/tag/docker/)
- [Linux](https://kodekloud.com/blog/tag/linux/)
- [X](https://x.com/kodekloud1)
- [Facebook](https://www.facebook.com/kodekloudtraining)
© 2026 DevOps Blog - Published with [Ghost](https://ghost.org/) & [Aspect](https://www.priority.vision/themes/aspect/) |
| Readable Markdown | null |
| Shard | 95 (laksa) |
| Root Hash | 14296026621330199095 |
| Unparsed URL | com,kodekloud!/blog/git-uncommit-last-commit/ s443 |