diff --git a/git_config.py b/git_config.py
index a5b5b4d..e658b05 100644
--- a/git_config.py
+++ b/git_config.py
@@ -259,21 +259,26 @@
       os.remove(self._pickle)
 
   def _ReadGit(self):
-    d = self._do('--null', '--list')
-    c = {}
-    while d:
-      lf = d.index('\n')
-      nul = d.index('\0', lf + 1)
+    """
+    Read configuration data from git.
 
-      key = _key(d[0:lf])
-      val = d[lf + 1:nul]
+    This internal method populates the GitConfig cache.
+
+    """
+    d = self._do('--null', '--list').rstrip('\0')
+    c = {}
+    for line in d.split('\0'):
+      if '\n' in line:
+          key, val = line.split('\n', 1)
+      else:
+          key = line
+          val = None
 
       if key in c:
         c[key].append(val)
       else:
         c[key] = [val]
 
-      d = d[nul + 1:]
     return c
 
   def _do(self, *args):
diff --git a/tests/fixtures/test.gitconfig b/tests/fixtures/test.gitconfig
new file mode 100644
index 0000000..3c573c9
--- /dev/null
+++ b/tests/fixtures/test.gitconfig
@@ -0,0 +1,3 @@
+[section]
+	empty
+	nonempty = true
diff --git a/tests/test_git_config.py b/tests/test_git_config.py
new file mode 100644
index 0000000..d67a8ba
--- /dev/null
+++ b/tests/test_git_config.py
@@ -0,0 +1,43 @@
+import os
+import unittest
+
+import git_config
+
+def fixture(*paths):
+    """Return a path relative to test/fixtures.
+    """
+    return os.path.join(os.path.dirname(__file__), 'fixtures', *paths)
+
+class GitConfigUnitTest(unittest.TestCase):
+    """Tests the GitConfig class.
+    """
+    def setUp(self):
+        """Create a GitConfig object using the test.gitconfig fixture.
+        """
+        config_fixture = fixture('test.gitconfig')
+        self.config = git_config.GitConfig(config_fixture)
+
+    def test_GetString_with_empty_config_values(self):
+        """
+        Test config entries with no value.
+
+        [section]
+            empty
+
+        """
+        val = self.config.GetString('section.empty')
+        self.assertEqual(val, None)
+
+    def test_GetString_with_true_value(self):
+        """
+        Test config entries with a string value.
+
+        [section]
+            nonempty = true
+
+        """
+        val = self.config.GetString('section.nonempty')
+        self.assertEqual(val, 'true')
+
+if __name__ == '__main__':
+    unittest.main()
