git文档中的'是什么意思;未包装的主体和主体';对于%B漂亮的打印说明符
如果在中搜索%b和%b,除了神秘的“(未包装的主题和正文)”之外,没有解释它们之间的区别 下面是一个来自repo的提交示例(使用git版本2.9.3)以及使用%b和%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
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."