#1051205 git grep -F and BRE fail for "'('" with "fatal: unmatched parenthesis" but work for "-- '('"?

Package:
git
Source:
git
Description:
fast, scalable, distributed revision control system
Submitter:
наб
Date:
2024-03-22 08:39:06 UTC
Severity:
normal
Tags:
#1051205#5
Date:
2023-09-04 13:38:04 UTC
From:
To:
Dear Maintainer,

$ git grep -F '('
fatal: unmatched parenthesis
$ git grep -F '\('
Changes.old:            sed 's/^\(\.[BRI]\)[BRI]\( \([^ ]\+\|\"[^\"]\+\"\)\)$/\1\2/g'
Changes.old:                git grep -P '^\.(BR|IR) [\w]*\([\d]*\)$'
(but '\('s are highlighted here so idk what this could possibly mean).

sid and bookworm.

Best,
наб

#1051205#10
Date:
2023-09-04 13:50:17 UTC
From:
To:
This is correct:
$ git grep '\('  | head -n1
fatal: command line, '\(': Unmatched ( or \(

This ain't:
$ git grep '('  | head -n1
fatal: unmatched parenthesis
$ git grep -- '('  | head -n1
CONTRIBUTING:       or from git(1) logs or logs in other version control systems.
$ git grep -F -- '('  | head -n1
CONTRIBUTING:       or from git(1) logs or logs in other version control systems.

#1051205#19
Date:
2024-03-22 08:16:31 UTC
From:
To:
hehe hoho git grep '(' is actually git grep PATTERN_GROUP_START,
because git grep has pattern grouping.

Not a bug per se, but the error message is actively adversarial:
  $ git grep \(
  fatal: unmatched parenthesis
  $ git grep \)
  fatal: incomplete pattern expression: )
neither of these explain what the error actually is.
Somehow the one for ) is worse,
since this is a /complete/ pattern (which is a regular expression).