diff --git a/pygit2.c b/pygit2.c
index 6efea74..ef74160 100644
--- a/pygit2.c
+++ b/pygit2.c
@@ -416,7 +416,7 @@ free_parents(git_oid **parents, int n) {
 static PyObject *
 Repository_create_commit(Repository *self, PyObject *args) {
     git_signature *author, *committer;
-    char *message;
+    char *message, *update_ref;
     git_oid tree_oid, oid;
     PyObject *py_parents, *py_parent;
     int parent_count;
@@ -424,7 +424,8 @@ Repository_create_commit(Repository *self, PyObject *args) {
     int err, i;
     char hex[GIT_OID_HEXSZ];
 
-    if (!PyArg_ParseTuple(args, "O&O&sO&O!",
+    if (!PyArg_ParseTuple(args, "zO&O&sO&O!",
+                          &update_ref,
                           signature_converter, &author,
                           signature_converter, &committer,
                           &message,
@@ -449,9 +450,8 @@ Repository_create_commit(Repository *self, PyObject *args) {
             return free_parents(parents, i);
     }
 
-    err = git_commit_create(&oid, self->repo, NULL,
-        author, committer, message, &tree_oid,
-        parent_count, (const git_oid**)parents);
+    err = git_commit_create(&oid, self->repo, update_ref, author, committer,
+        message, &tree_oid, parent_count, (const git_oid**)parents);
     free_parents(parents, parent_count);
     if (err < 0)
         return Error_set(err);
diff --git a/test/test_commit.py b/test/test_commit.py
index 81aff77..deb7bd5 100644
--- a/test/test_commit.py
+++ b/test/test_commit.py
@@ -69,7 +69,8 @@ class CommitTest(utils.BareRepoTestCase):
         tree = '967fce8df97cc71722d3c2a5930ef3e6f1d27b12'
 
         parents = [COMMIT_SHA]
-        sha = repo.create_commit(author, committer, message, tree, parents)
+        sha = repo.create_commit(None, author, committer, message, tree,
+                                 parents)
         commit = repo[sha]
 
         self.assertEqual(GIT_OBJ_COMMIT, commit.type)