Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I restore files to previous states in git? [duplicate]

I have made some changes to a file which has been committed a few times as part of a group of files, but now want to reset/revert the changes on it back to a previous version.

I have done a git log along with a git diff to find the revision I need, but just have no idea how to get the file back to its former state in the past.

like image 492
Hates_ Avatar asked Oct 18 '08 23:10

Hates_


People also ask

How do I revert to a previous state in git?

git reset --hard This command reverts the repo to the state of the HEAD revision, which is the last committed version. Git discards all the changes you made since that point. Use the checkout command with two dashes, then the path to the file for which you want to revert to its previous state.

How do I restore a file in git?

If you have not staged the deletion yet, simply run `git restore <filename>` and the file will be restored from the index. If you have staged the changes, however, running ` git restore` will throw an error, since the file does not exist in the index anymore.

What is git revert reset?

For this reason, git revert should be used to undo changes on a public branch, and git reset should be reserved for undoing changes on a private branch. You can also think of git revert as a tool for undoing committed changes, while git reset HEAD is for undoing uncommitted changes.


1 Answers

Assuming the hash of the commit you want is c5f567:

git checkout c5f567 -- file1/to/restore file2/to/restore 

The git checkout man page gives more information.

If you want to revert to the commit before c5f567, append ~1 (where 1 is the number of commits you want to go back, it can be anything):

git checkout c5f567~1 -- file1/to/restore file2/to/restore 

As a side note, I've always been uncomfortable with this command because it's used for both ordinary things (changing between branches) and unusual, destructive things (discarding changes in the working directory).


There is also a new git restore command that is specifically designed for restoring working copy files that have been modified. If your git is new enough you can use this command, but the documentation comes with a warning:

THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.

like image 166
Greg Hewgill Avatar answered Oct 13 '22 05:10

Greg Hewgill