This is a continuation of the example in Creating your own Bitbucket repository.
Now try the following:
$ rm -f testfile.txt
$ hg status
! testfile.txt
The first line removes this file (the -f flag forces this without prompting the user to make sure that’s what’s intended, since removing files can be dangerous).
The “hg status” command now shows ! next to the file name, indicating that a file under version control has disappeared.
Ordinarily if you remove a file in Unix it’s gone. Period. But with version control, we can easily recover from such a blunder:
$ hg revert testfile.txt
$ hg status --all
C testfile.txt
The “hg revert” has restored this file using the most recent version committed. You can also use “hg revert” if you make some changes to a file and then decide they were a bad idea.
Not only can you revert to the most recent version (in the tip), you can revert to any previous version that was committed.
Try this:
$ hg revert -r 0 testfile.txt
$ hg status
M testfile.txt
$ hg diff testfile.txt
diff -r 11d71622c220 testfile.txt
--- a/testfile.txt Tue Mar 02 23:33:52 2010 -0800
+++ b/testfile.txt Wed Mar 03 00:01:29 2010 -0800
@@ -1,3 +1,2 @@ This is a new file
This is a new file
with only two lines so far
-Adding a third line
Here we have reverted to the version in changeset 0 (the first time we committed, when the file only had two lines). Now “hg status” shows that it is modified (relative to the tip, which has three lines) and “hg diff” shows the change relative to the tip: the third line was removed.
Revert back to the tip:
$ hg revert --no-backup testfile.txt
The file should now have 3 lines again. If the –no-backup flag is omitted, Mercurial will create a file testfile.txt.orig with the modified version, just in case you regret your revert. (Not all revision control systems have this feature!)