使用git diff-tree / log输出格式

时间:2012-12-19 19:58:07

标签: git

我是git的新手。我正在尝试在2个分支或标签之间生成差异,以获得在2之间发生变化的文件列表,并在文件中存储此文件列表[每行1个](以及其他一些细节),并说“更改列表”。 TXT“

基本上这是我希望输出文件具有的格式:

[AbbrvHash1] [AbbrvHash2] [FullHash1] [FullHash2] [TypeOfChange] [FileName] [CommitComment(仅限AbbrvHash1注释的前14个字符)] [Hash1提交的日期/时间] [提交者ID] < / p>

每行9条信息,按AbbrvHash1

排序

我尝试过使用git“diff-tree”和“log”。单独地,他们提供部分信息。我试图看看如何合并diff-tree的2个输出并登录到1 flie,给我上面的输出。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用git show--pretty=format:<string>选项提取您需要的所有信息。

例如,仅显示任何给定树木的哈希值,在本例中为HEAD

git show -s HEAD --pretty="%H"

请注意-s取消show通常打印的差异输出,而--pretty="<string>"--pretty=format:<string>选项的简写。

对于您需要的数据,您可以将脚本基于以下命令:

git show --name-status <treeish> --pretty="%H %h %P %p %ce %at"

以上将打印:

  • 完整哈希
  • 短哈希
  • 完整的父级哈希
  • 短父哈希
  • 用户电子邮件
  • 提交的unix时间戳
  • 两个换行符
  • 此提交中已修改的文件列表,格式类似于git status --short

唯一缺少的部分是提交消息,可以单独打印:

git show -s <treeish> --pretty="%B"

还有一种替代形式可以清理主题行,因此可以将其用作文件名:

git show -s <treeish> --pretty="%f"

可以找到所有不同的选项in the git show documentation,查找“PRETTY FORMATS”部分。