How to find and restore a deleted file in a Git repository

Accidentally deleting a file is a common mishap that many developers face at some point in their coding journey. If you're using Git, a robust version control system, you have the tools to recover that lost file. In this Answer, we'll walk you through the process of finding and restoring a deleted file in a Git repository.

Identifying the deleted file

First, you need to identify the commit where the file was deleted. The git log command, combined with a path specification, can help you trace the history of a particular file:

git log --full-history -- [file path]

However, if you don't remember the exact path or name of the file, you can use the following command to list all deleted files:

git log --diff-filter=D --summary

This will show a list of commits and the files that were deleted in them.

Checking out the deleted file

Once you've identified the commit just before the file was deleted, you can restore it using the git checkout command:

git checkout [commit_hash]^ -- [file path]

For example, if the commit hash is a1b2c3d and the file path is folder/file.txt, the command would be:

git checkout a1b2c3d^ -- folder/file.txt

The ^ symbol after the commit hash ensures you're referencing the state of the repository just before the deletion.

Committing the restored file

After restoring, the file will appear in your working directory as an untracked file. To add it back to your repository:

git add [file path]
git commit -m "Restored deleted file"

What if the file was deleted in multiple commits?

Sometimes, a file might have been deleted, restored, and then deleted across multiple commits. To handle this, you can use the git rev-list command to find all the deletions:

git rev-list -n 1 HEAD -- [file path]

This command will return the hash of the last commit where the file existed. You can then use the git checkout command as described above to restore it.

Using GUI tools

For those who prefer graphical interfaces, various Git GUI tools, like GitKraken or SourceTree, offer visual representations of commit histories and allow for easy restoration of deleted files.

Conclusion

Mistakes happen, but with Git, they don't have to be permanent. By understanding the underlying mechanisms of Git and mastering a few essential commands, you can easily recover deleted files and maintain the integrity of your codebase. Whether you're new to Git or an experienced developer, these skills ensure a smooth development process.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved