Это на самом деле немного хитрее, чем вы могли бы ожидать, так как :/A
может быть тремя вещами.
Есть несколько разных битов документации Git, которые говорят об этом, но естьдва основных места для поиска:
- Документация gitrevisions описывает, как работают
:
-приставки, когда что-то спецификатор ревизии . - Гитлоссарий определяет, как
:
-префиксы работают, когда что-то является pathspec .
Когда это просто имя файла, :/A
просто означаетфайл с именем :/A
.
В качестве pathspec , :/A
использует символ "магическая подпись" /
, без окончания :
и имя A
,поэтому он ссылается на файл с именем A
в корневом каталоге (хранилища или рабочего дерева), а не на файл :/A
в каталоге current .
Как спецификатор ревизии , :/A
выполняет поиск сообщений о коммитах, а A
становится обычнымexpression (хотя в данном случае это тривиальное регулярное выражение, которое просто соответствует букве A
):
... Это имя возвращает самый младший соответствующий коммит, который доступен из любой ссылки, включая HEAD.
Используя --
, вы заставите Git рассматривать его как pathspec , где вы можете добавить :(literal)
впереди, чтобы защитить его от интерпретации.