diff --git a/lib/git.py b/lib/git.py
index 0f8f939..c4660ce 100644
--- a/lib/git.py
+++ b/lib/git.py
@@ -213,6 +213,12 @@
   return True
 
 
+def GetCurrentBranchOrId(cwd):
+  """Returns current branch of a repo, commit ID if repo is on detached HEAD."""
+  return GetCurrentBranch(cwd) or RunGit(cwd,
+                                         ['rev-parse', 'HEAD']).output.strip()
+
+
 def GetCurrentBranch(cwd):
   """Returns current branch of a repo, and None if repo is on detached HEAD."""
   try:
diff --git a/lib/git_unittest.py b/lib/git_unittest.py
index d868595..afb3383 100644
--- a/lib/git_unittest.py
+++ b/lib/git_unittest.py
@@ -109,6 +109,20 @@
     git.FindGitTopLevel(self.fake_path)
     self.assertCommandContains(['--show-toplevel'])
 
+  def testGetCurrentBranchOrId_NoBranch(self):
+    test_hash = '5' * 40
+    self.rc.AddCmdResult(partial_mock.In('symbolic-ref'), returncode=1)
+    self.rc.AddCmdResult(
+        partial_mock.In('rev-parse'), output='%s\n' % test_hash)
+    self.assertEqual(git.GetCurrentBranchOrId(self.fake_path), test_hash)
+    self.assertCommandContains(['rev-parse', 'HEAD'])
+
+  def testGetCurrentBranchOrId_OnBranch(self):
+    self.rc.AddCmdResult(
+        partial_mock.In('symbolic-ref'), output='refs/heads/branch\n')
+    self.assertEqual(git.GetCurrentBranchOrId(self.fake_path), 'branch')
+    self.assertCommandContains(['symbolic-ref', '-q', 'HEAD'])
+
   def testAddPath(self):
     git.AddPath(self.fake_path)
     self.assertCommandContains(['add'])
diff --git a/scripts/cros_mark_android_as_stable.py b/scripts/cros_mark_android_as_stable.py
index 3b33407..ca2e1ef 100644
--- a/scripts/cros_mark_android_as_stable.py
+++ b/scripts/cros_mark_android_as_stable.py
@@ -670,7 +670,7 @@
     logging.info('No stable candidate found.')
 
   tracking_branch = 'remotes/m/%s' % os.path.basename(options.tracking_branch)
-  existing_branch = git.GetCurrentBranch(android_package_dir)
+  existing_branch = git.GetCurrentBranchOrId(android_package_dir)
   work_branch = cros_mark_as_stable.GitBranch(constants.STABLE_EBUILD_BRANCH,
                                               tracking_branch,
                                               android_package_dir)
