diff --git a/git_updater.py b/git_updater.py
index 4c878c847cfa9431326b4a8a96f6b8ca6882dce4..15f036041dc91606d0aa421e1feb1e5440c52784 100644
--- a/git_updater.py
+++ b/git_updater.py
@@ -129,10 +129,4 @@ class GitUpdater():
                 self.merge_from, len(commits), upstream_branch))
 
         self._write_metadata(self.proj_path)
-        print("""
-This tool only updates METADATA. Run the following command to update:
-    git merge {merge_branch}
-
-To check all local changes:
-    git diff {merge_branch} HEAD
-""".format(merge_branch=self.merge_from))
+        git_utils.merge(self.proj_path, self.merge_from)
diff --git a/git_utils.py b/git_utils.py
index 580b3f34ffda36f6822f2bee7d30bc11bc942985..67f45008296269ea89d57b8776469807ea6df6f3 100644
--- a/git_utils.py
+++ b/git_utils.py
@@ -113,3 +113,8 @@ COMMIT_RE = re.compile(COMMIT_PATTERN)
 def is_commit(commit):
     """Whether a string looks like a SHA1 hash."""
     return bool(COMMIT_RE.match(commit))
+
+
+def merge(proj_path, branch):
+    """Merges a branch."""
+    _run(['git', 'merge', branch], cwd=proj_path)