获取 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.