我是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,给我上面的输出。
有什么想法吗?
答案 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"
以上将打印:
git status --short
唯一缺少的部分是提交消息,可以单独打印:
git show -s <treeish> --pretty="%B"
还有一种替代形式可以清理主题行,因此可以将其用作文件名:
git show -s <treeish> --pretty="%f"
可以找到所有不同的选项in the git show
documentation,查找“PRETTY FORMATS”部分。