Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git文档中的'是什么意思;未包装的主体和主体';对于%B漂亮的打印说明符_Git_Github_Git Commit_Git Log - Fatal编程技术网

git文档中的'是什么意思;未包装的主体和主体';对于%B漂亮的打印说明符

git文档中的'是什么意思;未包装的主体和主体';对于%B漂亮的打印说明符,git,github,git-commit,git-log,Git,Github,Git Commit,Git Log,如果在中搜索%b和%b,除了神秘的“(未包装的主题和正文)”之外,没有解释它们之间的区别 下面是一个来自repo的提交示例(使用git版本2.9.3)以及使用%b和%b打印的不同结果。提交命令是git commit-m“来自Jenkins的自动版本更新”。 $ git log -1 origin/master commit 30ac57e... Author: Jenkins <email@email.com> Date: Wed Jul 12 16:28:41 2017 +00

如果在中搜索%b和%b,除了神秘的“(未包装的主题和正文)”之外,没有解释它们之间的区别

下面是一个来自repo的提交示例(使用git版本2.9.3)以及使用%b和%b打印的不同结果。提交命令是
git commit-m“来自Jenkins的自动版本更新”。

$ git log -1 origin/master
commit 30ac57e...
Author: Jenkins <email@email.com>
Date:   Wed Jul 12 16:28:41 2017 +0000

    Automated version update from Jenkins.
$ git log -1 --format=%B origin/master
Automated version update from Jenkins.

$ git log -1 --format=%b origin/master

$ 
$git日志-1源/主
提交30ac57e。。。
作者:詹金斯
日期:2017年7月12日星期三16:28:41+0000
来自Jenkins的自动版本更新。
$git日志-1--格式=%B源/主
来自Jenkins的自动版本更新。
$git日志-1--格式=%b源/主
$ 
我不明白为什么%b无法生成提交消息正文,也不明白为什么%b(如果它在某种意义上包含“主题和正文”)只提供消息正文

对于从日志进行漂亮打印,%b和%b之间的根本区别是什么


如果您希望可靠地仅打印最近的提交消息(仅限消息),应如何操作?我认为应该是
git log-1——格式=%b origin/master
,但这个示例似乎提出了不同的建议。%B工作可靠吗?或者短语“(未包装的主题和正文)”是否意味着在某些情况下它可能会以某种方式包含主题?

尽管在编辑提交消息时可以使用任何格式,但通常的表单在第一行包含主题,然后可选地在其后包含空行和正文。在您的情况下,您只有一行。这意味着行是主题,可使用
%s
打印

使用
--format=email
时,此约定的效果非常明显。如果不使用此约定或任何依赖于此约定的内容,如果只需要完整的提交消息,请忽略
%s
%b

这在以下文件中提到:

讨论

虽然不是必需的,但最好在提交消息的开头有一行(少于50个字符)总结更改,然后是空行,然后是更全面的描述。提交消息中第一个空行之前的文本被视为提交标题,该标题在整个Git中使用。例如,将提交转换为电子邮件,并使用主题行上的标题和正文中提交的其余部分


您正在查看的提交没有正文,因此
%b
没有正确打印任何内容。在同一文档的其他地方,“主题”也称为“标题行”,是标题和下一个空行之间的所有内容,这是您提交的唯一消息类型。从第一行开始,身体就是一切

使用不同的提交说明:

$ git log -1 51e6467fdc073a9a5149b4c12ca9d79d6ac46872^!


“Unwrapped”只是意味着主题将删除任何换行(尽管惯例是它无论如何都不应该超过一行,git不强制执行这一点)。

当提交消息包含主题和正文时,可以看到%B和%B之间的差异

然后输入带有主题和正文的提交消息

这提供了提交消息的主题和正文

git log -1 --format=%b origin/master
这只提供提交消息的主体

当使用命令给出提交消息时

git commit -m "Automated version update from Jenkins."

“来自Jenkins的自动版本更新”消息将被视为主题,使用%b将无法生成正文。

我明白了,谢谢。我的错误是假设对于
git commit-m'…'
commits,如果消息字符串没有任何换行符,那么它将被视为body,而不是subject。@ely是的,更多的情况是相反的。如果有任何信息,那么就有一个主题,但不一定是正文:)谢谢。实际上,我从不使用编辑器窗口来提交消息。始终从命令行发送消息字符串。所以这对我来说不太明显。
Make the event data be the master that owns the socket, instead of the socket

Then we will be able to access the master's domains and other info later
on
$ git log --format=%b 51e6467fdc073a9a5149b4c12ca9d79d6ac46872^!
Then we will be able to access the master's domains and other info later
on
git commit
git log -1 --format=%B origin/master
git log -1 --format=%b origin/master
git commit -m "Automated version update from Jenkins."