获取 git 日志的前 'x' 个字符
Get first 'x' characters of git log
我试图只获取 git 日志的前 40 个字符,
我当前不工作的命令是:
git log <branch_name> | cut -c 1-40 >> some_file
这会输出整个日志。
对 linux 有点陌生,有什么建议吗?
编辑:
git log <branch_name> | head -n1 >> some_file
根据@Someprogrammerdude 建议的工作命令
基本上是回显多行。这样您的命令就可以从每行中删除 40 个字符。
如果你真的想要前 40 个字符而不考虑行模式,这里是命令
git log <branch_name> | awk '{print substr([=10=],1,40);exit}'
| head
方法很好——head
程序是一个通用过滤器,用于提取输入流的前面部分,或一些输入文件——但值得注意的是默认 git log
输出的第一行由单词 commit
组成,后跟提交的哈希,(可能并非巧合)拼写为 40 个字符:
$ git log | head -n 1
commit 8f60064c1f538f06e1c579cbd9840b86b10bcd3d
由于 commit
(包括结尾的 space)的长度为 8 个字符,如果将其缩减为 40 个字符,则会得到提交 ID 的 32 个字符的缩写。
由于 git log
通常首先向您显示 HEAD
提交,这意味着您正在获取 HEAD
提交的(部分)哈希 ID,并且有Git:
中更直接的方法
$ git rev-parse HEAD
8f60064c1f538f06e1c579cbd9840b86b10bcd3d
这省略了单词 commit
(和 space),但为您提供了我怀疑您关心的 40 个字符。您可以通过添加 --short
或 --short=<em>count</em>
:[=26= 将散列缩短为您喜欢的任意数量的字符]
$ git rev-parse --short=12 HEAD
8f60064c1f53
通常,将单个名称(例如 master
或标签名称或 HEAD
)转换为 Git 对象标识符(SHA-1 哈希) 是使用 git rev-parse
.
我试图只获取 git 日志的前 40 个字符, 我当前不工作的命令是:
git log <branch_name> | cut -c 1-40 >> some_file
这会输出整个日志。
对 linux 有点陌生,有什么建议吗?
编辑:
git log <branch_name> | head -n1 >> some_file
根据@Someprogrammerdude 建议的工作命令
基本上是回显多行。这样您的命令就可以从每行中删除 40 个字符。
如果你真的想要前 40 个字符而不考虑行模式,这里是命令
git log <branch_name> | awk '{print substr([=10=],1,40);exit}'
| head
方法很好——head
程序是一个通用过滤器,用于提取输入流的前面部分,或一些输入文件——但值得注意的是默认 git log
输出的第一行由单词 commit
组成,后跟提交的哈希,(可能并非巧合)拼写为 40 个字符:
$ git log | head -n 1
commit 8f60064c1f538f06e1c579cbd9840b86b10bcd3d
由于 commit
(包括结尾的 space)的长度为 8 个字符,如果将其缩减为 40 个字符,则会得到提交 ID 的 32 个字符的缩写。
由于 git log
通常首先向您显示 HEAD
提交,这意味着您正在获取 HEAD
提交的(部分)哈希 ID,并且有Git:
$ git rev-parse HEAD
8f60064c1f538f06e1c579cbd9840b86b10bcd3d
这省略了单词 commit
(和 space),但为您提供了我怀疑您关心的 40 个字符。您可以通过添加 --short
或 --short=<em>count</em>
:[=26= 将散列缩短为您喜欢的任意数量的字符]
$ git rev-parse --short=12 HEAD
8f60064c1f53
通常,将单个名称(例如 master
或标签名称或 HEAD
)转换为 Git 对象标识符(SHA-1 哈希) 是使用 git rev-parse
.