哪个是管道和瓷器命令?

时间:2016-10-04 08:40:19

标签: git

对于 git命令," plumbing"之间存在区别。和"瓷器"命令。如何确定哪些将被分类为管道或瓷器?即什么是允许我区分的边界线?

我不是在询问瓷器或管道命令是什么,而是如何根据命令我可以说出它是哪种类型。

4 个答案:

答案 0 :(得分:38)

作为blue112 noted,分界线是模糊的。但是,The very first documentation page有一个明确的列表(和as R.M. notes below,一个主要标准是,或者至少应该是,界面的稳定性 - 一些名义瓷器命令具有--porcelain 1 强制更稳定和/或更机器可读的输出。您可以选择使用它们的列表,或者确定某些命令的级别太高而不是低级别,或者级别太低而不能达到高级别。例如,您可能不同意git apply是一个管道命令,但Git页面说它是。或者,您可能会认为git fast-import之类的内容只能在脚本中使用。

下面的列表只是从文档中提取的,描述和其他分类被剥离,只留下“瓷器”与“管道”。 (子分类在字母排序顺序中仍然可见。我没有为每个条目构建链接,因为使用StackOverflow markdown会更加困难 - 这只需要一个简单的< pre> ...< / pre> ;包装。)

git-add                 git-rebase              git-cherry
git-am                  git-reset               git-count-objects
git-archive             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-describe            git-config              git-verify-tag
git-diff                git-fast-export         git-whatchanged
git-fetch               git-fast-import         gitweb
git-format-patch        git-filter-branch       git-archimport
git-gc                  git-mergetool           git-cvsexportcommit
git-grep                git-pack-refs           git-cvsimport
git-gui                 git-prune               git-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-push                git-blame

管道

git-apply               git-for-each-ref        git-receive-pack
git-checkout-index      git-ls-files            git-shell
git-commit-tree         git-ls-remote           git-upload-archive
git-hash-object         git-ls-tree             git-upload-pack
git-index-pack          git-merge-base          git-check-attr
git-merge-file          git-name-rev            git-check-ignore
git-merge-index         git-pack-redundant      git-check-mailmap
git-mktag               git-rev-list            git-check-ref-format
git-mktree              git-show-index          git-column
git-pack-objects        git-show-ref            git-credential
git-prune-packed        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-daemon              git-interpret-trailers
git-update-index        git-fetch-pack          git-mailinfo
git-update-ref          git-http-backend        git-mailsplit
git-write-tree          git-send-pack           git-merge-one-file
git-cat-file            git-update-server-info  git-patch-id
git-diff-files          git-http-fetch          git-sh-i18n
git-diff-index          git-http-push           git-sh-setup
git-diff-tree           git-parse-remote        git-stripspace

1 调用此--plumbing似乎更合乎逻辑,但作为VonC notes in this answer to a related question,可以将其视为请求:“我正在实施瓷器,所以请给出我的管道式输出。“这个论点中的缺陷是你可能正在实施复杂的管道,并希望使用简单的管道来做到这一点:现在看不到瓷器,然而,你的复杂管道将--porcelain传递给一些简单的管道。

答案 1 :(得分:5)

我认为命令之间没有直线。

您每天使用的命令都是瓷器(考虑statusdiffcommit ...),较少使用的命令,它们提供较少的格式化输出是管道(考虑diff-indexhash-objectsend-pack)。

您可以使用git help -a获得完整的git命令列表。在这里告诉哪个命令更多地属于瓷器或管道工程,这很容易。

查看git send-pack手册,您可以看到以下行

  

通常你会想要使用git push,它是这个命令的更高级别的包装器。

这就是告诉你它更像是一个管道命令。

答案 2 :(得分:2)

One idea is to visit the Git documentation page and see if the command you want to use is listed under High-level commands (app.get('/sign-in', (req, res) => { res.sendFile(path.resolve( PATH )); } ); ) or Low-level commands (porcelain)

答案 3 :(得分:1)

列出管道命令(以及其他命令,在其各自的部分中)的实际命令为:

git help -av

这在Git 2.20(2018年第四季度)中有所变化,考虑到“ git help -a”和“ git help -av”给出了不同的信息,通常,“详细”版本对新用户更友好。

默认情况下,“ git help -a”现在使用更详细的输出(如果使用“ --no-verbose”,您可以返回原始状态)。

请参见commit 26c7d06Nguyễn Thái Ngọc Duy (pclouds)(2018年9月29日)。
(由Junio C Hamano -- gitster --commit 54e564e中合并,2018年10月19日)

  

help -a:改进--verbose并将其设置为默认值

     

当您键入“ git help”(或仅键入“ git”)时,会看到一个包含常用命令及其简短说明的列表,建议您使用“ git help -a”或“ git help -g”以获取更多详细信息。

     

git help -av”将更加友好并且与“ git help”中显示的内容内联,因为它还显示了带有说明的命令列表,并且对命令进行了正确的分组。

     

help -av”并未显示“ help -a”中显示的所有内容。
  为此,请在“ help -av”中添加外部命令部分。在此同时,还要添加一个别名部分(直到现在别名没有UI,只有“ 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
...