The Challenge
You need to revert one specific file to its state from a previous commit without affecting other files in your Git repository. How can you achieve this?
The Solution
To restore a file to its previous state, follow these steps:
- Identify the Target Commit First, find the commit hash of the version you want to restore. Use:
git log
Commit hashes look like this:
070cc94d35c1c45fb40c13344583e16f77e77c0b
Note: You can use the first 7 characters (e.g., 070cc94
) as a shorthand.
- Restore the File Use the
git checkout
command with the commit hash and file path:
git checkout 070cc94 -- path/to/file.txt
This command:
- Uses
--
to separate the commit reference from the file path - Restores the specified file without changing your current branch
- Multiple Files (if needed) To restore multiple files from the same commit:
git checkout 070cc94 -- file1.txt path/to/file2.py
Important Notes:
- This action stages the restored file(s) for commit but doesn’t create a new commit.
- To keep the changes, commit them:
git commit -m "Restored file.txt to version from commit 070cc94"
- If you decide not to keep the changes, use
git restore --staged <file>
to unstage, thengit restore <file>
to discard changes.
Tips:
- Use
git show 070cc94:path/to/file.txt
to preview a file’s content from a specific commit. - If you’re unsure about the exact commit, use
git log -- path/to/file.txt
to see the commit history for a specific file.
By following these steps, you can precisely restore individual files to their previous states without affecting the rest of your repository.
Would you like more information on file restoration or Git history management?