diff --git a/git_browse/browse.py b/git_browse/browse.py
index 47ccaeb..451f605 100755
--- a/git_browse/browse.py
+++ b/git_browse/browse.py
@@ -369,7 +369,8 @@ def get_git_config() -> str:
 
 
 def get_git_url(git_config_file: str) -> str:
-    config = configparser.ConfigParser()
+    # strict is removed here because gitconfig allows for multiple "fetch" keys
+    config = configparser.ConfigParser(strict=False)
     config.read(git_config_file)
     try:
         git_url = config['remote "origin"']['url']

diff --git a/git_browse/tests/test.py b/git_browse/tests/test.py
index 9578999..cb3ba05 100644
--- a/git_browse/tests/test.py
+++ b/git_browse/tests/test.py
@@ -2,6 +2,7 @@ import os
 import re
 import shutil
 import sys
+import tempfile
 from typing import List, cast
 import unittest
 from unittest.mock import MagicMock, patch
@@ -248,14 +249,22 @@ class GetGitConfig(unittest.TestCase):
 
 class GetGitURL(unittest.TestCase):
     def setUp(self) -> None:
-        self.git_config_file = os.path.join(
+        git_config_file = os.path.join(
             BASE_DIRECTORY,
             '.git',
             'config'
         )
+        with open(git_config_file, 'rb') as handle:
+            configs = handle.read()
+        self.git_config_file = tempfile.NamedTemporaryFile()
+        self.git_config_file.write(configs)
+        self.git_config_file.seek(0)
+
+    def tearDown(self) -> None:
+        self.git_config_file.close()
 
     def test_url(self) -> None:
-        git_url = browse.get_git_url(self.git_config_file)
+        git_url = browse.get_git_url(self.git_config_file.name)
         expected = 'git@github.com:albertyw/git-browse'
         self.assertEqual(git_url.replace('.git', ''), expected)
 
@@ -263,6 +272,21 @@ class GetGitURL(unittest.TestCase):
         with self.assertRaises(RuntimeError):
             browse.get_git_url(BASE_DIRECTORY)
 
+    def test_multiple_fetch(self) -> None:
+        # For https://github.com/albertyw/git-browse/issues/48
+        config_contents = (
+            '[remote "origin"]\n'
+            '    fetch = refs/heads/my_name/*:refs/remotes/origin/my_name/*\n'
+            '    fetch = refs/heads/master:refs/remotes/origin/master\n'
+            '    url = git@github.com:albertyw/git-browse\n'
+        )
+        config_file = tempfile.NamedTemporaryFile()
+        config_file.write(config_contents.encode('utf-8'))
+        config_file.seek(0)
+        git_url = browse.get_git_url(config_file.name)
+        expected = 'git@github.com:albertyw/git-browse'
+        self.assertEqual(git_url.replace('.git', ''), expected)
+
 
 class ParseGitURL(unittest.TestCase):
     def setUp(self) -> None:

Support running with multiple fetch configs
gitconfig allows for multiple fetch configs which breaks configparser: https://stackoverflow.com/questions/15507264/can-i-specify-in-git-config-to-fetch-multiple-refspecs
git_browse/tests/test.py::GetGitURL::test_multiple_fetch
git_browse/tests/test.py::TestGithubHost::test_commit_hash_url git_browse/tests/test.py::TestGithubHost::test_directory_url git_browse/tests/test.py::TestGithubHost::test_file_url git_browse/tests/test.py::TestGithubHost::test_get_url git_browse/tests/test.py::TestGithubHost::test_init git_browse/tests/test.py::TestGithubHost::test_root_url git_browse/tests/test.py::SourcegraphHost::test_create git_browse/tests/test.py::SourcegraphHost::test_create_dot_git git_browse/tests/test.py::SourcegraphHost::test_get_url_commit git_browse/tests/test.py::SourcegraphHost::test_get_url_directory git_browse/tests/test.py::SourcegraphHost::test_get_url_file git_browse/tests/test.py::SourcegraphHost::test_get_url_root git_browse/tests/test.py::SourcegraphHost::test_init git_browse/tests/test.py::SourcegraphHost::test_valid_focus_object git_browse/tests/test.py::TestGodocsHost::test_create git_browse/tests/test.py::TestGodocsHost::test_create_dot_git git_browse/tests/test.py::TestGodocsHost::test_get_url_commit git_browse/tests/test.py::TestGodocsHost::test_get_url_directory git_browse/tests/test.py::TestGodocsHost::test_get_url_file git_browse/tests/test.py::TestGodocsHost::test_get_url_root git_browse/tests/test.py::TestGodocsHost::test_init git_browse/tests/test.py::TestGodocsHost::test_valid_focus_object git_browse/tests/test.py::GitObject::test_is_directory git_browse/tests/test.py::FocusObject::test_default git_browse/tests/test.py::FocusObject::test_init git_browse/tests/test.py::FocusObject::test_is_directory git_browse/tests/test.py::FocusObject::test_is_not_directory git_browse/tests/test.py::FocusObject::test_is_not_root git_browse/tests/test.py::FocusObject::test_is_root git_browse/tests/test.py::FocusHash::test_init git_browse/tests/test.py::FocusHash::test_is_commit_hash git_browse/tests/test.py::GetRepositoryRoot::test_fail_get git_browse/tests/test.py::GetRepositoryRoot::test_get git_browse/tests/test.py::GetGitConfig::test_get git_browse/tests/test.py::GetGitURL::test_bad_url git_browse/tests/test.py::ParseGitURL::test_broken_url git_browse/tests/test.py::ParseGitURL::test_https_url git_browse/tests/test.py::ParseGitURL::test_sourcegraph_github_host git_browse/tests/test.py::ParseGitURL::test_sourcegraph_uber_host git_browse/tests/test.py::ParseGitURL::test_ssh_url git_browse/tests/test.py::TestGetFocusObject::test_default_focus_object git_browse/tests/test.py::TestGetFocusObject::test_directory_focus_object git_browse/tests/test.py::TestGetFocusObject::test_file_focus_object git_browse/tests/test.py::TestGetFocusObject::test_get_focus_hash git_browse/tests/test.py::TestGetFocusObject::test_invalid_phabricator_object git_browse/tests/test.py::TestGetFocusObject::test_nonexistend_focus_object git_browse/tests/test.py::TestGetFocusObject::test_phabricator_object git_browse/tests/test.py::TestGetCommitHash::test_get_hash git_browse/tests/test.py::TestGetCommitHash::test_get_unknown_hash git_browse/tests/test.py::TestOpenURL::test_dry_open_url git_browse/tests/test.py::TestOpenURL::test_open_subprocess git_browse/tests/test.py::TestOpenURL::test_open_url git_browse/tests/test.py::FullTest::test_check_version