Ответ 1
Так как git 2.0, git add -A
и git add -A :/
совпадают.
Но волшебный путь :/
не является новым и восходит к git 1.7.6 (апрель 2011). См. commit 8a42c98. Это описано в Documentation/glossary-content.txt
Спецификация пути, начинающаяся с двоеточия
:
, имеет особое значение.
В короткой форме за ведущим двоеточием:
следует ноль или более "магия" подписи "(который необязательно завершается другим двоеточием:
), а остаток - это шаблон, который будет соответствовать пути.
:top: or :/
Волшебное слово
top
(магическая подпись:/
) делает шаблон совпадающим с корнем рабочего дерева, даже когда вы запускаете команду изнутри подкаталога.
Обратите внимание, что если вы хотите добавить папку с именем ":/
" (git add -A :/
), это будет возможно только в git 2.7 (Nov 2015)
См. передать 29abb33 (25 октября 2015 г.) Junio C Hamano (gitster
).
Так как git 2.0, "
add -u
" и "add -A
" запускаются из подкаталога без какого-либо знака пути, означающего "все в рабочем дереве" (до 2.0, они были ограничены текущим каталогом).
Ограничение для текущего каталога было реализовано путем вставки ".
" в командную строку, когда конечный пользователь не предоставил нам никакого пути.
В версии 2.0 мы обновили код, чтобы вставить ":/
" (вместо ".
" ), чтобы рассмотреть все, начиная с верхнего уровня, с помощью волшебства пути "top
".
(Это больше не требуется и исправлено в объявлении commit 29abb33: реализация git add -A
больше не использует :/
для предстоящего git 2.7)
Кстати, такое упрощение также устраняет ошибку в угловом регистре, которая проистекает из того факта, что "
:/
" не обязательно означает любую магию.
Пользователь сказал бы "git --literal-pathspecs add -u :/
" из командной строки, когда у нее есть каталог ":
" и хочет добавить все в нее (и она знает, что ее:/
будет восприниматься как "все под солнцем" магии pathspec, если она отключает магию с помощью--literal-pathspecs
).Внутреннее использование '
:/
' будет вести себя так же, как при явном указании ":/" при запуске с "-literal-pathspecs" и не будет добавлять все под солнцем, поскольку исходный код.
Так как это внутреннее использование :/
больше не будет, то git --literal-pathspecs add -u :/
действительно будет работать и добавить файлы под папкой с именем "column" ( ":
" ).