diff --git a/TODO.txt b/TODO.txt
index d4b8ab2..d9e656e 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -5,8 +5,7 @@ Signature
 
 References
 ==========
-- Wrap missing functions: git_reference_foreach, git_reference_is_packed,
-  git_reference_reload
+- Wrap missing functions: git_reference_foreach, git_reference_is_packed.
 - Write more twisted tests. Like accessing a reference deleted by someone
   else.
 
diff --git a/pygit2.c b/pygit2.c
index e3c3327..a4cd80d 100644
--- a/pygit2.c
+++ b/pygit2.c
@@ -2408,6 +2408,23 @@ Reference_rename(Reference *self, PyObject *py_name)
     Py_RETURN_NONE; /* Return None */
 }
 
+static PyObject *
+Reference_reload(Reference *self)
+{
+    int err;
+
+    CHECK_REFERENCE(self);
+
+    err = git_reference_reload(self->reference);
+    if (err < 0) {
+        self->reference = NULL;
+        return Error_set(err);
+    }
+
+    Py_RETURN_NONE;
+}
+
+
 static PyObject *
 Reference_resolve(Reference *self, PyObject *args)
 {
@@ -2563,6 +2580,8 @@ static PyMethodDef Reference_methods[] = {
      "Delete this reference. It will no longer be valid!"},
     {"rename", (PyCFunction)Reference_rename, METH_O,
       "Rename the reference."},
+    {"reload", (PyCFunction)Reference_reload, METH_NOARGS,
+     "Reload the reference from the file-system."},
     {"resolve", (PyCFunction)Reference_resolve, METH_NOARGS,
       "Resolve a symbolic reference and return a direct reference."},
     {NULL}
diff --git a/test/test_refs.py b/test/test_refs.py
index 46a6ac9..c96aa9b 100644
--- a/test/test_refs.py
+++ b/test/test_refs.py
@@ -135,6 +135,17 @@ class ReferencesTest(utils.RepoTestCase):
         self.assertEqual(reference.name, 'refs/tags/version2')
 
 
+    def test_reload(self):
+        name = 'refs/tags/version1'
+
+        ref = self.repo.create_symbolic_reference(name, "refs/heads/master")
+        ref2 = self.repo.lookup_reference(name)
+        ref.delete()
+        self.assertEqual(ref2.name, name)
+        self.assertRaises(KeyError, ref2.reload)
+        self.assertRaises(GitError, getattr, ref2, 'name')
+
+
     def test_reference_resolve(self):
         reference = self.repo.lookup_reference('HEAD')
         self.assertEqual(reference.type, GIT_REF_SYMBOLIC)