1

我是 git 的新手。我正在尝试在 2 个分支或标签之间生成差异,以获取在 2 个分支或标签之间发生更改的文件列表,并将此文件列表 [每行 1 个](以及其他一些详细信息)存储在一个文件中,例如“changelist.文本”

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

[AbbrvHash1] [AbbrvHash2] [FullHash1] [FullHash2] [TypeOfChange] [FileName] [CommitComment(仅 AbbrvHash1 评论的前 14 个字符)] [Hash1 提交的日期/时间] [提交者 ID]

每行 9 条信息,按 AbbrvHash1 排序

我试过使用 git“diff-tree”和“log”。他们单独提供部分信息。我正在尝试查看如何合并 diff-tree 的 2 个输出并登录到 1 个苍蝇,以提供上述输出。

有什么想法吗?

4

1 回答 1

0

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

例如,仅显示任何给定 treeish 的哈希值,在这种情况下HEAD

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

请注意,它会抑制通常打印-s的 diff 输出,这是该选项的简写。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"

所有不同的选项都可以git show文档中找到,查找“漂亮格式”部分。

于 2012-12-26T21:52:31.187 回答