DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. What is Git Undo Last Commit? How to Rewrite History — Version History, That Is

What is Git Undo Last Commit? How to Rewrite History — Version History, That Is

Need to get rid of your most recent commit in Git? Scared of messing your branch up? Check out this post to eliminate that fear and handle the situation with confidence!

Angela Stringfellow user avatar by
Angela Stringfellow
·
May. 11, 17 · Tutorial
Like (2)
Save
Tweet
Share
10.12K Views

Join the DZone community and get the full member experience.

Join For Free

Git is, without a doubt, an MVP in the development world. If you host your repos in Git, knowing the tricks of the trade is essential. In this post, we’ll take a look at how to use undo last commit to scrap your most recent committed changes that you don’t want or need to tweak. For more Git tips, check out this post on repo size maintenance and this post on checking out remote branches.

Definition of Git Undo Last Commit

Git undo last commit is used to scrap the most recent record of changes made to a file in a distributed version control system (DVCS) without losing the changes themselves. The changes can be retained so the user can edit them and re-commit them.

How Git Undo Last Commit Works

To understand how git undo last commit works, the user needs to understand some definitions:

  • Git: A DVCS that has a reputation for being a fast and easy way to manage file versions in a collaborative environment. Git tracks
    • Who made changes to files.
    • When they made changes to files.
    • Why they made changes to files.
    • What was changed in the files.
  • Command line interface: A text-based user interface for a computer operating system. What you type is what you get.
  • Commit: A git command that records a permanent (except when undo last commit is used) record of a file at that time.
  • Tree (or branch): The directory that contains a list of file names.
  • HEAD: The representation of the current commit in a branch.
  • Working tree: Where files are currently being worked upon. The files need to be registered in the index to perform a commit.
  • $: The dollar sign signals the start of a line in a command line interface.

Learn more definitions for working with git commands.

Almost anything that has been committed in git can be recovered — even if commits were deleted or overwritten. But if changes weren’t committed and lost, they are unlikely to be recovered.

To make git undo last commit, the user can use SmartGit, a graphical git that runs on Linux, Mac OS X (10.7 or newer) and Windows (Vista or newer). Choose the menu command Local|Undo Last Commit to undo that permanent record. The changes won’t be lost, so it will be possible to edit the changes and re-commit them.

Also, git-extras is a collection of git utilities that create aliases to commands needed to work with revision histories. For example, git undo last commit can be shortened to git undo.

To achieve the undo last commit, several options are using the command line. Some users appreciate the command line over graphic interfaces like some drivers appreciate standard transmission over the automatic transmission.

Git Undo Last Commit

Screenshot via StackOverflow.

There are different ways to undo the last commit using the command line — which makes the lack of graphical interface a feature, not a bug.

  • $ git reset –soft HEAD^ This will undo the last commit and save the changes. The soft means the reset doesn’t change the index file or working tree. This gives users the ability to edit changes and re-commit them.
  • $ git reset –hard HEAD~1 This will undo the last commit and reset the index and working tree. Any changes are gone. If more than one commit needs to be undone, $ git reset –hard HEAD~2 will undo the last two commits. Note that reset will undo all commits that came after the one returned to.
  • $ git revert commit-hash This creates a new commit that is the last commit. Hash is a synonym for the unique identifier of an object usually represented by a 40 character hexadecimal string.
  • $ git revert HEAD~2 Similar to the command above, this command creates a new commit that is the third last commit in the HEAD.
  • $ git checkout filename The command will undo all uncommitted changes the specific filename. Use a “.” instead of a filename to wipe out all uncommitted changes.
  • $ git commit –amend Sometimes only a commit’s message needs to be edited. This command will let users change the message associated with the last commit.
  • $ git rm filename Remove a file after it was added to an index.

Best Practices for Using Git Undo Last Commit

A git undo last commit command is not terribly complicated. Nonetheless, probably the best way to undo the last commit is not to need to do go back and revise history. So commit to using version control best practices:

  • Commit related changes: Each commit should have related, small changes to help collaborators understand changes and undo any problems. Put different changes and fixes in different commits.
  • Commit often: Constantly committing changes is a way to ensure the changes represented are small. It also makes it easier to share.
  • Don’t commit partially-completed work: Split the work into logical chunks that can be committed when each chunk is finished.
  • Test before committing: The work isn’t complete unless it works. Test it before sharing with collaborators.
  • Write informative commit messages: Start with a short summary — 50 characters is a good limit. Then explain the changes by detailing what was changed and why it was changed.
  • Avoid using version control as a backup system: Don’t use git to store backup files.
  • Use branches: Branches help separate different lines of development. Use branches to organize commits logically.
  • Agree on a pre-defined Workflow: Make sure everyone understands who is responsible for what areas of development. There are many ways to collaborate. Pick one and stick to it.

To learn more about Git undo last commit, visit the following resources and tutorials:

  • Official git reference manual
  • Git Beginner’s Guide for Dummies
  • Become a Git Guru
  • What is git and why should I use it?
  • Git – Undoing Changes – Atlassian Git Tutorial
  • How to undo (almost) anything with Git
  • Git HowTo: revert a commit already pushed to a remote repository
  • How to undo last commit(s) in Git?
Commit (data management) Git Undo History (command) Rewrite (programming)

Published at DZone with permission of Angela Stringfellow, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Apache Kafka Is NOT Real Real-Time Data Streaming!
  • Top 5 Data Streaming Trends for 2023
  • 5 Best Python Testing Frameworks
  • File Uploads for the Web (2): Upload Files With JavaScript

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: