24.11.2023

Undo options in Git

Undo options in Git

Git — incredibly potent version management system, brimming with features designed to manage code and projects. Its majority of valuable characteristic is arguably his capability to rollback modifications. This doc delves into crucial rollback procedures, encompassing "git restore", "git reset", "git revert" and "git checkout".

Usage of git checkout

Using this command provides a simple and effective way for discard changes. This enables revert prior version of files in active working catalog. This command has the ability to revert modifications to a file that have not been indexed thus far. To accomplish for this, simply input:

git checkout myfile.txt

Usage of git reset

Next example, though a bit more intricate, provides a range of options for reversing modifications. It has the capability to revert modifications in the index and also can even modify HEAD. The three primary operations performed.
It directs to precise commit indicated within command, whilst retaining modifications in operational and index catalog:

git reset --soft

It reverts to selected commit, erasing modifications from index but retaining them in the working catalog:

git reset --mixed

It entirely reverses all alterations, it brings you return for mentioned commit, erasing all modifications in both index and the working catalogs:

git reset --hard

This is practical illustration:

git reset --hard HEAD~1

This example will roll back "HEAD" and present branch one commit, discarding every modification.

Usage of git Restore

"Git restore" command is typically to undo changes in files or stages back to their state at particular commit. This becomes essential when you've made modifications that you subsequently choose for undo. Basic syntax of this is:

git restore

In this context, "file" should be substituted with the name of the file you wish to revert to its latest committed state.
Additionally, Git restore can also be used for unstage files. This can be quite useful if you've prematurely staged a file and then decide not to commit it. The syntax for this operation is:

git restore --staged

In this command, "file" represents the name of the file you intend to de-stage. Git restore also has the capability to restore a file to its condition at a specific commit, which is beneficial when you want to restore a file to a certain version. The command structure for this is as follows:

git restore --source=

In this case, "commit" refers to the exact hash of the commit you want to use as a basis for restoring the file, while "file" signifies the name of the file.

Undo All Modifications

If you decide to revert all local modifications in your working directory, you can execute the subsequent command:

git restore -- .

This will restore all files in the current directory to their status in the most recent commit.

Revert

If you've pushed your modifications to the shared repository and desire to undo them, you should use the git revert command. This command creates a new commit that reverts the modifications of the chosen commit. Here's a sample usage of git revert:

git revert HEAD

This action will generate a new commit that retracts all modifications made in the prior commits.

Undo operations ought to be managed cautiously, particularly in environments with multiple users. It's typically advised not to undo commits that have already been pushed to the shared repository, unless there's a strong necessity to do so
In summary, we've examined the fundamental undo operations in Git. These powerful tools provide significant flexibility and control over your change history, but should be used with discretion.