获得第一个' x' git log

时间:2017-02-01 09:03:06

标签: git cut git-log

我试图只获取git日志的前40个字符, 我目前没有工作的命令是:

git log <branch_name> | cut -c 1-40 >> some_file

这将输出整个日志。

有点新的linux,有什么建议吗?

修改

git log <branch_name> | head -n1 >> some_file

每个@Someprogrammerdude建议的工作命令

2 个答案:

答案 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}'