gpt4 book ai didi

git-diff - 使用 --numstat 和 --name-status 运行 git diff-tree

转载 作者:行者123 更新时间:2023-12-04 03:19:47 26 4
gpt4 key购买 nike

我正在编写一个脚本来分析对 git repo 所做的更改。
在某些时候,我需要遍历所有提交并获取有关每个提交的这些信息:

  • 提交 ID
  • 日期
  • 提交消息
  • ...
  • 文件已更改
  • 文件名
  • 更改类型(添加/修改/删除/重命名)
  • 新文件名(如果更改类型为“重命名”)
  • 添加的行数
  • 移除的行数

  • 我通过 git log 获得提交消息和日期.我遇到的问题是文件。

    如果我不想收集添加/删除的行数,我只需使用
    git diff-tree --no-commit-id --name-status -M -r abcd12345

    输出将类似于
    A   Readme.md
    M src/something.js
    D src/somethingelse.js
    R100 tests/a/file.js tests/b/file.js

    我可以以编程方式解析和阅读。

    要获取有关添加/删除的行的信息,我可以使用:
    git diff-tree -M -r --numstat abcd12345

    输出将是这样的:
    abcd12345
    82 0 Readme.md
    41 98 src/something.js
    0 64 src/somethingelse.js
    0 0 tests/{a => b}/file.js

    对于重命名的文件,这不是机器可读的。

    我的问题是:有没有办法将这两个命令结合起来?好像不能用--numstat--name-status .

    我可以运行两个单独的命令并将结果 merge 到我的脚本中。在这种情况下,是否还有其他开关可以用来使第二个命令的结果更具机器可读性?

    谢谢。

    最佳答案

    我认为您的分析(您需要两个单独的命令)是正确的。使用 -z使用 --numstat 获得机器可读的输出(这会禁用花哨的重命名编码和所有特殊字符引用),但请注意,您将不得不在 ASCII NUL 处将行分开,而不是换行符。

    关于git-diff - 使用 --numstat 和 --name-status 运行 git diff-tree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39171874/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com