diff --git a/git_updater.py b/git_updater.py
index e52f4ac..208abdd 100644
--- a/git_updater.py
+++ b/git_updater.py
@@ -13,6 +13,7 @@
 # limitations under the License.
 """Module to check updates from Git upstream."""
 
+from pathlib import Path
 from string import Template
 
 import metadata_pb2  # type: ignore
@@ -42,6 +43,16 @@
     """Updater for Git upstream."""
     UPSTREAM_REMOTE_NAME: str = "update_origin"
 
+    def __init__(self, proj_path: Path, old_identifier: metadata_pb2.Identifier,
+        old_ver: str) -> None:
+        non_default_branch = git_utils.find_non_default_branch(old_identifier.value)
+        if non_default_branch is not None:
+            self.upstream_branch = non_default_branch
+            old_identifier.value = old_identifier.value.strip(f'tree/{self.upstream_branch}')
+        else:
+            self.upstream_branch = git_utils.detect_default_branch(proj_path, self.UPSTREAM_REMOTE_NAME)
+        super().__init__(proj_path, old_identifier, old_ver)
+
     def is_supported_url(self) -> bool:
         return git_utils.is_valid_url(self._proj_path, self._old_identifier.value)
 
@@ -94,7 +105,8 @@
         """Checks upstream and returns whether a new version is available."""
         self.setup_remote()
 
-        latest_sha = self.current_head_of_upstream_default_branch()
+        latest_sha = git_utils.get_sha_for_revision(
+            self._proj_path, self.UPSTREAM_REMOTE_NAME + '/' + self.upstream_branch)
         latest_tag = self.latest_tag_of_upstream()
 
         if git_utils.is_commit(self._old_identifier.version):
diff --git a/git_utils.py b/git_utils.py
index d7b0372..2b6bba0 100644
--- a/git_utils.py
+++ b/git_utils.py
@@ -17,6 +17,7 @@
 import re
 import subprocess
 from pathlib import Path
+from urllib.parse import urlparse
 
 import fileutils
 import hashtags
@@ -25,6 +26,12 @@
 
 UNWANTED_TAGS = ["*alpha*", "*Alpha*", "*beta*", "*Beta*", "*rc*", "*RC*", "*test*"]
 
+COMMIT_PATTERN = r'^[a-f0-9]{40}$'
+COMMIT_RE = re.compile(COMMIT_PATTERN)
+
+GITHUB_NETLOC = 'github.com'
+GITHUB_BRANCH_DIVIDER = '/tree/'
+
 
 def fetch(proj_path: Path, remote_name: str, branch: str | None = None) -> None:
     """Runs git fetch.
@@ -145,10 +152,6 @@
     return lines
 
 
-COMMIT_PATTERN = r'^[a-f0-9]{40}$'
-COMMIT_RE = re.compile(COMMIT_PATTERN)
-
-
 # pylint: disable=redefined-outer-name
 def is_commit(commit: str) -> bool:
     """Whether a string looks like a SHA1 hash."""
@@ -353,3 +356,11 @@
     root = fileutils.find_tree_containing(proj_path)
     manifest = Manifest.for_tree(root)
     return manifest.remote
+
+
+def find_non_default_branch(identifier_value: str) -> str | None:
+    parsed_url = urlparse(identifier_value)
+    _, divider, branch = parsed_url.path.partition(GITHUB_BRANCH_DIVIDER)
+    if parsed_url.netloc == GITHUB_NETLOC and divider == GITHUB_BRANCH_DIVIDER:
+        return branch
+    return None
diff --git a/tests/test_git_utils.py b/tests/test_git_utils.py
index 7f305ef..320577a 100644
--- a/tests/test_git_utils.py
+++ b/tests/test_git_utils.py
@@ -213,5 +213,26 @@
         assert first_commit == out
 
 
+class FindNonDefaultBranchTest(unittest.TestCase):
+    """Tests for git_utils.find_non_default_branch"""
+    def test_branch_in_github_url(self) -> None:
+        """Tests if the branch attached to the url is found."""
+        url = 'https://github.com/robolectric/robolectric/tree/google'
+        non_default_branch = git_utils.find_non_default_branch(url)
+        self.assertEqual(non_default_branch, "google")
+
+    def test_no_branch_in_url(self) -> None:
+        """Tests if None is returned when the url doesn't have a branch."""
+        url = 'https://github.com/GNOME/libxml2/'
+        non_default_branch = git_utils.find_non_default_branch(url)
+        self.assertIsNone(non_default_branch)
+
+    def test_branch_in_gitlab_url(self) -> None:
+        """Tests if None is returned when the url is non-GitHub git."""
+        url = 'https://gitlab.xiph.org/xiph/opus/-/tree/whitespace'
+        non_default_branch = git_utils.find_non_default_branch(url)
+        self.assertIsNone(non_default_branch)
+
+
 if __name__ == "__main__":
     unittest.main(verbosity=2)
