术语“瓷器”偶尔出现在Git文档中。这是什么意思?
当前回答
更重要的是,术语“瓷器”适用于高级命令,输出:
意味着人类可以读懂 不是用来解析的 易受变化/演变的影响
这是关键:如果您编写脚本,您应该尽可能使用具有稳定输出的管道命令。而不是瓷器般的命令。
然而,你可以使用一个瓷器命令的输出,它在脚本中有一个——瓷器选项(见下文),比如:
git status --porcelain
git push --porcelain
git blame --porcelain
尽管git包含自己的瓷器层,但其低级命令足以支持替代瓷器的开发。 这些低级命令的接口(输入、输出、选项集和语义)要比瓷级命令稳定得多,因为这些命令主要用于脚本使用。 另一方面,为了改善终端用户体验,瓷器命令的界面可能会发生变化。
请参阅“如何以编程方式确定是否存在未提交的更改?”作为使用管道命令而不是瓷器命令的示例。
注意:一个porcelain命令可以有一个——porcelain选项。 例如:git status——porcelain,它指定要解析的输出。
--porcelain
为脚本提供易于解析的输出格式。这类似于短的输出,但是无论用户配置如何,在git版本之间都保持稳定。详情见下文。
以上提到的线程细节:
This is my fault, to some degree. The "short-status" form is meant for human eyeballs, and was designed by Junio. Some people wanted a scriptable status output, too, so I slapped a "--porcelain" on the same format that turns off configurable features like relative pathnames and colorizing, and makes an implicit promise that we won't make further changes to the format. The idea was to prevent people from scripting around --short, because it was never intended to be stable. So yeah, while --porcelain by itself is stable and scriptable, it is perhaps not the most friendly to parsers. The "-z --porcelain" format is much more so, and I would recommend it to anyone scripting around "git status"
这反映了git用户在脚本中使用瓷器命令的需求! 但只有稳定的输出(瓷器)
正如william-berg所评论的,git push也一样!
--porcelain
产生机器可读的输出。 每个ref的输出状态行将以制表符分隔,并发送到stdout而不是stderr。 裁判的完整的象征性名字将被给出。
正如John Glassmyer在评论中提出的:
也许——porcelain在这里的意思是“生产适合瓷脚本消费的产品”。
这可以从第一个“——瓷器选项”的引入案例中得到支持 (在git状态——瓷器之前,提交6f15787, 2009年9月,git 1.7.0, 在git推送之前——瓷器,提交1965ff7, 2009年6月,git 1.6.4):
怪——瓷器:
-p
--porcelain
以适合机器使用的格式显示。
提交b5c698d, 2006年10月,git 1.4.4
新选项使命令的本机输出格式发出更容易由Porcelain处理的输出。
其他回答
在git中,“瓷器”一词的创造和使用实际上是由Mike Taht发明的,除此之外,他还输掉了与Linus Torvalds的激烈争论。
https://web.archive.org/web/20190427113112/http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
事实上,我的一个希望是其他SCM可以使用git管道。 但是我真的建议你使用“git”本身,而不是任何“libgit”。即你把所有的管道作为真正的程序,而不是试图链接到单独的例程,你会脚本它。
如果你不想要,我就不做。 不过把管道和瓷器分开还是说得通的。
Greg Hewgill的答案是完全正确的。请注意,Git还有其他可供选择的陶瓷,包括Easy Git、yap、pyrite和vng。每一个都是为了让Git在社区的某些部分更容易学习/使用。所有这些项目的链接都在Easy Git页面上:http://people.gnome.org/~newren/eg/。
瓷是程序和程序套件的可爱名字,依赖于核心git,提供了对核心git的高级访问。瓷器比“管道”暴露出更多的SCM界面。
——瓷器,Git Wiki
在git中,瓷器有两种不同的含义。
这两种意义,虽然可以说不是严格意义上的矛盾,但也可能是矛盾的。
A.概念性(管道vs瓷器)
官方Pro Git书:
但是因为Git最初是一个版本控制系统的工具包,而不是一个完全用户友好的VCS,所以它有许多执行低级工作的子命令,并且被设计成以unix风格链接在一起或从脚本调用。这些命令通常被称为Git的“管道”命令,而更友好的命令被称为“瓷器”命令。
B.瓷器/ =瓷器选项
许多git命令都带有用于脚本编写的——porcelain选项。
Git状态文档:
——瓷(= <版本>) 为脚本提供易于解析的输出格式。这类似于短的输出,但是无论用户配置如何,在Git版本之间都保持稳定。详情见下文。
Git diff的文档:
——word-diff(= > <模式) 瓷 使用用于脚本使用的特殊的基于行的格式。
瓷器命令是为人类使用而设计的,而不是那些输出容易被计算机解析的命令。Git状态就是一个例子。
推荐文章
- Visual Studio Code无法检测已安装的Git
- 强制LF eol在git的回购和工作副本
- Git:在裸库中更改活动分支的正确方法?
- 删除git中的分支是否会将其从历史记录中删除?
- JavaBean和POJO之间的区别是什么?
- 防止在GitHub上推送到master ?
- 根据Git,谁是“我们”,谁是“他们”?
- git如何合并后樱桃采摘工作?
- Git搜索单个文件历史记录中的字符串
- Git命令显示所有(轻量级)标签创建日期
- Gitignore并没有忽视文件夹
- 什么时候用。git/info/exclude代替。gitignore来排除文件?
- 如何告诉git忽略个别行,即gitignore为特定行代码
- “git diff——耐心”是什么意思?
- 我如何在GitHub中为其他人的代码做出贡献?