Какие сантехнические и фарфоровые команды?

За git В командах есть это различие между командами "сантехника" и "фарфор". Как я могу определить, что будет классифицироваться как сантехника или фарфор? т.е. какая граница позволяет мне дифференцироваться?

Я не спрашиваю, что такое фарфор или сантехника, а скорее как, учитывая команду, я могу сказать, какой это тип.

4 ответа

Решение

Как отметил blue112, разделительная линия нечеткая. Однако на самой первой странице документации есть явный список (и, как отмечает РМ ниже, одним из основных критериев является или, по крайней мере, предполагается, что это стабильность интерфейса), для которой некоторые номинально-фарфоровые команды имеют --porcelain 1 для обеспечения более стабильного и / или более машиночитаемого вывода). Вы можете использовать их список или решить, что некоторые команды имеют слишком высокий уровень, чтобы быть низким, или слишком низкий уровень, чтобы быть высоким. Например, вы можете не согласиться с этим git apply это команда сантехника, но страница Git говорит, что это так. Или вы могли бы рассмотреть такие вещи, как git fast-import быть чем-то, что вы бы использовали только внутри скрипта.

Приведенный ниже список просто извлечен из документации, с описаниями и дополнительными классификациями, оставленными без учета "фарфора" и "сантехники". (Подклассификации остаются видимыми в виде инверсий в алфавитном порядке сортировки. Я не создавал ссылки для каждой записи, поскольку это было бы значительно сложнее с разметкой Stackru - для этого просто требовалась простая оболочка

... .)

фарфор

git-add                 git-rebase              git-cherry
git-am                  git-reset               git-count-objects
git-архив git-revert              git-difftool
git-bisect              git-rm                  git-fsck
git-branch              git-shortlog            git-get-tar-commit-id
git-bundle              git-show                git-help
git-checkout            git-stash               git-instaweb
git-cherry-pick         git-status              git-merge-tree
git-citool              git-submodule           git-rerere
git-clean               git-tag                 git-rev-parse
git-clone               git-worktree            git-show-branch
git-commit              gitk                    git-verify-commit
git-description git-config              git-verify-tag
git-diff                git-fast-export         git-whatchanged
git-fetch               git-fast-import         gitweb
git-format-patch        git-фильтр-ветка git-archimport
git-gc                  git-mergetool           git-cvsexportcommit
git-grep                git-pack-refs           git-cvsimport
Гит-Ги Гит-чернослив Гит-cvsserver
git-init                git-reflog              git-imap-send
git-log                 git-relink              git-p4
git-merge               git-remote              git-quiltimport
git-mv                  git-repack              git-request-pull
git-notes               git-replace             git-send-email
git-pull                git-annotate            git-svn
мерзавец мерзавец

водопровод

git-apply               git-for-each-ref        git-receive-pack
git-checkout-index      git-ls-файлы git-shell git-commit-tree git-ls-remote git-upload-archive git-hash-объект git- lit-tree             git-upload-pack
git-index-pack          git-merge-base          git-check-attr
git-merge-файл git-name-rev            git-check-ignore
git-merge-index         git-pack-избыточный git- check-mailmap git-mktag git-rev-list git-check-ref-формат git-mktree              git-show-index          git-колонка git-pack-объекты git-шоу-ref git-учетные данные git-prune-упакованные git-unpack-file         git-credential-cache
git-read-tree           git-var                 git-credential-store
git-symbolic-ref        git-verify-pack         git-fmt-merge-msg
git-unpack-objects      git-демон демон git-interpret-trailers
git-update-index        git-fetch-pack          git-mailinfo
git-update-ref          git-http-backend        git-mailsplit дерево-git-запись-git-send-pack git-merge-one-file git-cat-file git- обновление-сервер-информация git-patch-id git-diff-файлы git-http-fetch          git-sh-i18n
git-diff-index          git-http-push           git-sh-setup
git-diff-tree           git-parse-remote ГИТ-stripspace 

1 Казалось бы, логичнее называть это --plumbing Но, как VonC отмечает в этом ответе на связанный вопрос, вместо этого можно рассматривать это как запрос: "Я реализую фарфор, поэтому, пожалуйста, дайте мне вывод в стиле сантехника". Недостаток этого аргумента в том, что вы, возможно, выполняете сложную сантехнику и хотите использовать простую сантехнику, чтобы сделать это: теперь фарфора не видно, и все же, ваша сложная сантехника проходит --porcelain к простой сантехнике.

Я думаю, что нет прямой линии между командами.

Команды, которые вы используете изо дня в день, фарфоровые (подумайте о status, diff, commit...), менее используемые команды, которые дают меньше форматированных выходных данных, являются верными (подумайте о diff-index, hash-object или же send-pack).

Вы можете получить полный список команд git, используя git help -a, Здесь довольно легко определить, какая команда больше относится к фарфору или сантехнике.

Глядя на руководство git send-pack Вы можете увидеть следующую строку

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

Это то, что говорит вам, что это скорее сантехническая команда.

Фактическая команда, перечисляющая сантехнические команды (и другие команды, в их собственных разделах) была:

git help -av

И это меняется с Git 2.20 (Q4 2018), учитывая " git help -a " а также " git help -av "давать разные фрагменты информации, и, как правило," многословная "версия более дружественна для новых пользователей.

" git help -a "по умолчанию теперь используется более подробный вывод (с помощью" --no-verbose "Вы можете вернуться к оригиналу).

См. Коммит 26c7d06 (29 сентября 2018 г.) Нгуен Тай Нгук Дуй ( pclouds )
(Объединено Юнио С Хамано - gitster - в комитете 54e564e, 19 октября 2018 года)

help -a: улучшить и сделать --verbose дефолт

Когда вы печатаете git help " (или просто " git msgstr ") вас приветствует список часто используемых команд и их краткое описание, и вам предлагается их использовать" git help -a " или же " git help -g " Больше подробностей.

" git help -av "будет более дружелюбным и подходящим для того, что показано с помощью" git help msgstr "поскольку он показывает список команд с описанием, а команды правильно сгруппированы.

" help -av "не показывает все" help -a "показывает, хотя.
Добавить раздел внешних команд в " help -av "для этого. Пока там, добавьте раздел для псевдонимов (до сих пор псевдонимы не имеют пользовательского интерфейса, просто" git config ").

Просто git help -a (с Git 2.20+) теперь вернет:

vonc@VONC D:\git\git
> git help -a
Main Porcelain Commands
   add                  Add file contents to the index
   am                   Apply a series of patches from a mailbox
   archive              Create an archive of files from a named tree
   bisect               Use binary search to find the commit that introduced a bug
...

Одна из идей состоит в том, чтобы посетить страницу документации Git и посмотреть, указана ли команда, которую вы хотите использовать, в разделе Команды высокого уровня (porcelain) или команды низкого уровня (plumbing)

Другие вопросы по тегам