Что git добавляет :/ на самом деле?

С тех пор, как я впервые изучил Git несколько месяцев назад, я использовал git add :/ для промежуточного хранения своих файлов перед фиксацией, и у меня сложилось впечатление, что команда размещает все измененные и недавно добавленные файлы в моем каталоге Git (я предполагаю, Такое впечатление у меня сложилось из одной из статей, по которой я учился). Это отлично работало для меня в течение последних нескольких месяцев, так что, по крайней мере, мне кажется, что я веду себя так, но, прочитав ответы на этом сайте, у меня сложилось впечатление, что это не так, и тот факт, что такая малодокументированная команда - еще один намек на это.

Что именно делает git add :/? Если он не размещает все измененные и недавно добавленные файлы, существует ли команда, которая это делает, или это невозможно (пока) с помощью одной команды в Git?


person Hashim Aziz    schedule 12.11.2019    source источник
comment
но, прочитав ответы на этом сайте, у меня сложилось впечатление, что это не так. Пожалуйста, предоставьте ссылки и / или цитаты, подтверждающие это утверждение.   -  person Code-Apprentice    schedule 12.11.2019
comment
Вы действительно вводите :/ как часть команды? Я никогда раньше не видел и не использовал этот синтаксис. Какая у вас операционная система?   -  person Code-Apprentice    schedule 12.11.2019
comment
Я предполагаю, что замечание о недостаточной документации было о конкретном синтаксисе :/ Я могу поклясться, что помню, как Торек ссылался на него в каком-то вопросе здесь, но такую ​​​​строку ужасно сложно исследовать ^^, и я ломаю голову (пока напрасно) чтобы найти, что это было ... Ссылка на корень репо, я думаю? Я все еще не уверен.   -  person RomainValeri    schedule 12.11.2019
comment
@Code-Apprentice Итак, вы утверждаете, что команда есть в документации, но, похоже, смущены ':/'? 'git add' - это команда, отличная от 'git add :/', поэтому я здесь задаю вопрос в первую очередь.   -  person Hashim Aziz    schedule 12.11.2019
comment
@Hashim Да, мне потребовалось некоторое время, чтобы понять, что :/ было частью команды. В заголовке вопроса это похоже на эмоцию. Можете ли вы предоставить ссылки и цитаты на вопросы и статьи, где вы читали об этой команде? Теперь мне действительно интересно, потому что я никогда раньше не видел такого синтаксиса.   -  person Code-Apprentice    schedule 12.11.2019
comment
Да, я неправильно понял ваш вопрос. Теперь, если вы можете предоставить несколько ссылок, чтобы дать вашему вопросу больше контекста, мы сможем преодолеть мое замешательство, и я буду рад помочь вам.   -  person Code-Apprentice    schedule 12.11.2019
comment
@Quentin Спасибо, поиск в Google и Stack не дал мне этих результатов.   -  person Hashim Aziz    schedule 13.11.2019


Ответы (1)


См. документацию pathspec в gitglossary:

указатель пути

Шаблон, используемый для ограничения путей в командах Git.

Спецификации пути используются в командной строке git ls-files, git ls-tree, git add, git grep, git diff, git checkout и многих других команд, чтобы ограничить объем операций некоторым подмножеством дерева или рабочего дерева. См. документацию по каждой команде, чтобы узнать, относятся ли пути к текущему каталогу или к верхнему уровню. Синтаксис пути следующий:

  • любой путь соответствует самому себе

  • путь до последней косой черты представляет собой префикс каталога. Область действия этой спецификации пути ограничена этим поддеревом.

  • остальная часть pathspec является шаблоном для оставшейся части пути.

    Пути, относящиеся к префиксу каталога, будут сопоставляться с этим шаблоном с помощью fnmatch(3); в частности, * и ? могут соответствовать разделителям каталогов.

    Например, Documentation/*.jpg будет соответствовать всем файлам .jpg в поддереве Documentation, включая Documentation/chapter_1/figure_1.jpg.

    Спецификация пути, начинающаяся с двоеточия :, имеет особое значение. В краткой форме за начальным двоеточием : следует ноль или более букв «волшебной подписи» (которые необязательно заканчиваются другим двоеточием :), а остаток является шаблоном для сопоставления с путем. «Волшебная подпись» состоит из символов ASCII, которые не являются ни буквенно-цифровыми, ни универсальными, ни специальными символами регулярных выражений, ни двоеточием. Необязательное двоеточие, которое завершает «волшебную подпись», может быть опущено, если шаблон начинается с символа, который не принадлежит набору символов «волшебной подписи» и не является двоеточием.

    В длинной форме за начальным двоеточием : следует открывающая скобка (, разделенный запятыми список из нуля или более «магических слов» и закрывающая скобка ), а остаток является шаблоном для сопоставления с путем.

    Путь с двоеточием означает, что пути нет. Эта форма не должна сочетаться с другими спецификациями пути.

    сверху

    Волшебное слово top (волшебная подпись: /) обеспечивает сопоставление шаблона с корнем рабочего дерева, даже если вы запускаете команду из подкаталога.

person choroba    schedule 12.11.2019