diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java
index a31be1c..f912c3e 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java
@@ -220,7 +220,7 @@
     if (!branches.isEmpty()) {
       desc.branches = Maps.newLinkedHashMap();
       for (String name : branches) {
-        Ref ref = repo.getRef(normalizeRefName(name));
+        Ref ref = repo.exactRef(normalizeRefName(name));
         if ((ref != null) && (ref.getObjectId() != null)) {
           desc.branches.put(name, ref.getObjectId().name());
         }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
index b04540f..e9f95a7 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -191,7 +191,7 @@
     if (view.getRevision() != Revision.NULL) {
       return view;
     }
-    Ref headRef = repo.getRef(Constants.HEAD);
+    Ref headRef = repo.exactRef(Constants.HEAD);
     if (headRef == null) {
       return null;
     }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
index 59112d0..de2a06f 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
@@ -218,7 +218,7 @@
 
   private boolean isVisible(RevWalk walk, Result result) throws IOException {
     String maybeRef = OPERATOR_SPLITTER.split(result.getRevision().getName()).iterator().next();
-    if (repo.getRef(maybeRef) != null) {
+    if (repo.findRef(maybeRef) != null) {
       // Name contains a visible ref; skip expensive reachability check.
       return true;
     }
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
index bd73242..962b037 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
@@ -303,12 +303,12 @@
   }
 
   private String id(String refName) throws IOException {
-    return ObjectId.toString(repo.getRepository().getRef(refName).getObjectId());
+    return ObjectId.toString(repo.getRepository().exactRef(refName).getObjectId());
   }
 
   private String peeled(String refName) throws IOException {
     return ObjectId.toString(
-        repo.getRepository().peel(repo.getRepository().getRef(refName)).getPeeledObjectId());
+        repo.getRepository().peel(repo.getRepository().exactRef(refName)).getPeeledObjectId());
   }
 
   private Map<String, String> ref(String url, String name) {
