61 votes

Qui sont la plomberie et de la porcelaine commandes?

Pour git des commandes il y a cette distinction entre "plomberie" et "porcelaine" des commandes. Comment puis-je déterminer ce qui serait classé comme l'un de plomberie ou de porcelaine, une? autrement dit, Quelle est la ligne de frontière qui me permet de les différencier?

Je ne suis pas de demander ce que la porcelaine ou de la plomberie commande est, mais plutôt de savoir comment, compte tenu d'une commande, ce que je peux dire de quel type il est.

61voto

torek Points 25463

Comme blue112 noté, la ligne de démarcation est floue. La première page de documentation, cependant, a une liste explicite (et comme R. M. les notes ci-dessous, un principal critère est, ou du moins est censé être, la stabilité de l'interface pour laquelle certains nominalement-porcelaine commandes ont --porcelain1 à la force plus stable et/ou plus lisibles à la machine de sortie). Vous pouvez choisir d'utiliser leur liste, ou décider que certaines commandes sont trop haut niveau pour être de bas niveau, ou niveau trop bas pour être de haut niveau. Par exemple, vous pourriez être en désaccord qu' git apply est une plomberie de commande, mais le Git page dit qu'il est. Ou, vous pourriez penser à des choses comme git fast-import à être quelque chose que vous ne utilisez à l'intérieur d'un script.

La liste ci-dessous est tout simplement extraites de la documentation, avec des descriptions et des classifications supplémentaires supprimés pour ne laisser que "porcelaine" vs "plomberie". (Sous-classifications restent visibles comme des inversions dans l'ordre de tri alphabétique. Je n'ai pas de construire des liens pour chaque entrée, ce qui serait beaucoup plus difficile avec StackOverflow markdown-ce juste besoin d'un simple <pre>...</pre> wrapper.)

porcelaine

git-ajouter git-git rebase-cerise
git-am git-git reset-comte-objets
git-archive git-git revert-difftool
git-coupent git-git rm-fsck
git-branche git-shortlog git-get-tar-commit-id
git-bundle git-git show-aider
git-git checkout-git stash-instaweb
git-cherry-pick git-le statut de git-fusion-arbre
git-citool git-sous-module git-rerere
git-propre git tag git-rev-parse
git clone git-worktree git-show-branche
git-commit gitk git-vérifier la validation
git-décrire git-git config-vérifier-tag
git-git diff-fast-export git-whatchanged
git-git fetch-fast-import gitweb
git format-patch git-filtre-branche git-archimport
git-git gc-git mergetool-cvsexportcommit
git-git grep-pack-refs git-cvsimport
git-git gui-prune git-cvsserver
git-git init-git reflog-imap-envoyer
git-git log-relier git-p4
git-git merge-distant git-quiltimport
git-git mv-repack git-demande-pull
git-notes git-remplacer git-send-email
git-git pull-annoter git-svn
git-git push-blâme

plomberie

git-appliquer git-pour-chaque-ref git-receive-pack
git-checkout index git-ls-fichiers git-shell
git-commit-arbre git-ls-distant git-télécharger l'archive de
git-hash-object git-ls-arbre git-upload-pack
git-index-pack git-fusion de la base de git-check-attr
git-fusion-fichier git-nom-git rev-check-ignorer
git-fusion-index git-pack-redondant git-check-mailmap
git-mktag git-rev-liste git-check-ref-format
git-mktree git-show-index git-colonne
git-pack-objets git-show-ref git-credential
git-prune-paniers git-décompresser fichier git-identification-cache
git-lire-arbre git-var git-credential magasin
git-symbolique-ref git-vérifier-pack git-fmt-fusion-msg
git-déballez-les objets git-daemon git-interpréter-remorques
git-mise à jour de l'index git-fetch-pack git-mailinfo
git-mise à jour-ref git-http-backend git-mailsplit
git-écrire-arbre git-envoyer-pack git-fusion-un-fichier
git cat-file git update-server-info git-patch-id
git-diff-fichiers git-http-git fetch-sh-i18n
git-diff-index git-http-push git-sh-installation
git-diff-arbre git-analyser-distant git-stripspace

1Il semblerait plus logique d'appeler cette --plumbing, mais comme VonC notes dans cette réponse à une question connexe, on peut considérer cela plutôt comme une demande: "je suis la mise en œuvre de la porcelaine afin de me donner de plomberie de style de sortie." La faille dans cette argument est que vous pourriez être la mise en œuvre de complexes de plomberie, et que vous voulez utiliser plomberie simple à faire: maintenant, il n'y a pas de porcelaine en vue, et pourtant, votre complexe de plomberie passes --porcelain des installations de plomberie.

6voto

blue112 Points 2801

Je pense qu'il n'y a pas de ligne droite entre les commandes.

Les commandes que vous utilisez au jour le jour de la porcelaine (pensez - status, diff, commit...), de moins en moins utilisées commandes, qui donnent moins de formatage des sorties de plomberie (pensez - diff-index, hash-object ou send-pack).

Vous pouvez avoir une liste complète des commandes git en utilisant git help -a. Il est assez facile de dire ici qui commande appartient plus à la porcelaine ou plumbering.

Regarder le manuel de l' git send-pack vous pouvez voir la ligne suivante

Habituellement, vous pouvez utiliser la commande git push, ce qui est un niveau supérieur wrapper de cette commande, à la place.

C'est ce qui vous dit qu'en plus une plomberie de commande.

6voto

VonC Points 414372

La commande liste de plomberie commandes (et les autres commandes, dans leurs propres sections) était:

git help -av

Et cela change avec Git 2.20 (T4 2018), considérant "git help -a" et "git help -av" donner des éléments d'information différents, et plus généralement le "verbose" version est plus conviviale pour les nouveaux utilisateurs.

"git help -a" par défaut utilise maintenant le plus prolixe de sortie (avec "--no-verbose", vous pouvez revenir en arrière à l'original).

Voir commettre 26c7d06 (29 septembre 2018) par Nguyễn Thái Ngọc Duy (pclouds).
(Fusionnés par Junio C Hamano -- gitster -- en commettre 54e564e, 19 Oct 2018)

help -a: améliorer l' --verbose par défaut

Lorsque vous tapez "git help" (ou simplement "git"), vous êtes accueilli par une liste avec couramment utilisé des commandes et leur description courte et sont suggéré d'utiliser "git help -a" ou "git help -g" pour plus de détails.

"git help -av" serait plus convivial et en ligne avec ce qui est montré avec "git help", car il affiche la liste des commandes avec description en tant que bien, et les commandes sont bien regroupés.

"help -av" ne pas tout montrer "help -a" montre bien.
Ajouter de commande externe section "help -av" pour cela. Tandis qu'à y ajouter une section pour les alias en tant que bien (jusqu'à présent, alias ont pas d'INTERFACE utilisateur, juste "git config").

Un simple git help -a (avec Git 2.20+) sera de retour:

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
...

3voto

Saik0 Points 346

Une idée est de visiter le Git page de documentation et de voir si la commande que vous voulez utiliser est inscrite en vertu de commandes de Haut niveau (porcelain) ou des commandes de Bas niveau (plumbing)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X