diff --git a/pre_commit_hooks/no_commit_to_branch.py b/pre_commit_hooks/no_commit_to_branch.py
index 22ee95e..0c75217 100644
--- a/pre_commit_hooks/no_commit_to_branch.py
+++ b/pre_commit_hooks/no_commit_to_branch.py
@@ -1,21 +1,25 @@
 from __future__ import print_function
 
 import argparse
-import sys
 
+from pre_commit_hooks.util import CalledProcessError
 from pre_commit_hooks.util import cmd_output
 
 
 def is_on_branch(protected):
-    branch = cmd_output('git', 'symbolic-ref', 'HEAD')
+    try:
+        branch = cmd_output('git', 'symbolic-ref', 'HEAD')
+    except CalledProcessError:
+        return False
     chunks = branch.strip().split('/')
     return '/'.join(chunks[2:]) == protected
 
 
-def main(argv=[]):
+def main(argv=None):
     parser = argparse.ArgumentParser()
     parser.add_argument(
-        '-b', '--branch', default='master', help='branch to disallow commits to',
+        '-b', '--branch', default='master',
+        help='branch to disallow commits to',
     )
     args = parser.parse_args(argv)
 
@@ -23,4 +27,4 @@
 
 
 if __name__ == '__main__':
-    sys.exit(main(sys.argv))
+    exit(main())
diff --git a/tests/check_no_commit_to_branch_test.py b/tests/check_no_commit_to_branch_test.py
index 99af938..7e39256 100644
--- a/tests/check_no_commit_to_branch_test.py
+++ b/tests/check_no_commit_to_branch_test.py
@@ -29,19 +29,22 @@
         assert is_on_branch('master') is True
 
 
-def test_main_b_call(temp_git_dir):
-    with temp_git_dir.as_cwd():
-        cmd_output('git', 'checkout', '-b', 'other')
-        assert main(['-b', 'other']) == 1
-
-
 def test_main_branch_call(temp_git_dir):
     with temp_git_dir.as_cwd():
         cmd_output('git', 'checkout', '-b', 'other')
-        assert main(['--branch', 'other']) == 1
+        assert main(('--branch', 'other')) == 1
 
 
 def test_main_default_call(temp_git_dir):
     with temp_git_dir.as_cwd():
         cmd_output('git', 'checkout', '-b', 'anotherbranch')
-        assert main() == 0
+        assert main(()) == 0
+
+
+def test_not_on_a_branch(temp_git_dir):
+    with temp_git_dir.as_cwd():
+        cmd_output('git', 'commit', '--no-gpg-sign', '--allow-empty', '-m1')
+        head = cmd_output('git', 'rev-parse', 'HEAD').strip()
+        cmd_output('git', 'checkout', head)
+        # we're not on a branch!
+        assert main(()) == 0
