我试图只获取git日志的前40个字符, 我目前没有工作的命令是:
git log <branch_name> | cut -c 1-40 >> some_file
这将输出整个日志。
有点新的linux,有什么建议吗?
修改
git log <branch_name> | head -n1 >> some_file
每个@Someprogrammerdude建议的工作命令
答案 0 :(得分:5)
| head
方法很好 - head
程序是一个通用过滤器,用于提取输入流的前部或一些输入文件 - 但值得注意的是默认git log
输出的第一行包含单词commit
后跟提交的哈希值,其中(可能并非巧合)拼写为40个字符:
$ git log | head -n 1
commit 8f60064c1f538f06e1c579cbd9840b86b10bcd3d
由于commit
(包括尾随空格)长度为8个字符,如果将其删除为40个字符,则会得到32个字符的提交ID缩写。
由于git log
通常是通过向您显示HEAD
提交开始的,这意味着您正在获取({1}}提交的哈希ID(的一部分),并且有很多在Git中更直接的方法:
HEAD
这省略了$ git rev-parse HEAD
8f60064c1f538f06e1c579cbd9840b86b10bcd3d
(和空格)这个词,但是你会得到我怀疑你关心的40个字符。您可以通过添加commit
或--short
将哈希值缩短为您喜欢的任意数量的字符:
--short=count
通常,将单个名称(例如$ git rev-parse --short=12 HEAD
8f60064c1f53
或标记名称或master
)转换为Git对象标识符(SHA-1哈希)的方法是使用{{ 1}}。
答案 1 :(得分:0)
基本上,它回应多行。这样你的命令就可以从每一行中删除40个字符。
如果你真的想要前40个字符而不管线条模式,这里是命令
git log <branch_name> | awk '{print substr($0,1,40);exit}'