Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue.
What did you do before the bug happened? (Steps to reproduce your issue)
I ran: $ git grep -rl --color=never '#!/.*/env ruby'
What did you expect to happen? (Expected behavior)
Get a list of filenames where the contents matched the regex
What happened instead? (Actual behavior)
For one of my files named `ensure-string-env.rb` was printed with part of the path in colour, and the first dash of the filename replaced with a colon.
What's different between what you expected and what actually happened?
I expected: images/deploy_tools/scripts/ensure-string-env.rb
I got: images/deploy_tools/scripts/ensure:string-env.rb
The string up to the colon was printed in pink
Anything else you want to add:
I tested with both zsh and bash with the same result. I teested with git 2.47.3 and 2.49.1 everything worked correctly. I also tried other terminals to rule that out.
2.51.1 is the current version on Fedora 42
I was able to reproduce this with: $ echo foo > test-one $ git add test-one $ git grep -l foo test:one
This seems to be reproducible with any filename containing a dash
[System Info] git version: git version 2.51.1 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh libcurl: 8.11.1 OpenSSL: OpenSSL 3.2.6 30 Sep 2025 zlib-ng: 2.2.5 SHA-1: SHA1_DC SHA-256: SHA256_BLK default-ref-format: files default-hash: sha1 uname: Linux 6.17.5-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Oct 24 14:10:01 UTC 2025 x86_64 compiler info: gnuc: 15.2 libc info: glibc: 2.41 $SHELL (typically, interactive shell): /bin/zsh
[Enabled Hooks] pre-commit