Like git, git-annex hangs on to every old version of a file (by default), so you can make tags and branches, and can check them out later to look at the old files. # git tag 1.0 # rm -f my_cool_big_file # git commit -m deleted # git checkout 1.0 # cat my_cool_big_file yay! old version still here Of course, when you `git checkout` an old branch, some old versions of files may not be locally available, and may be stored in some other repository. You can use `git annex get` to get them as usual.