【问题标题】:Remove filename and timestamp from git-blame从 git-blame 中删除文件名和时间戳
【发布时间】:2019-08-18 15:26:24
【问题描述】:

长文件路径和不需要的时间戳让我很难阅读git blame 的输出。我想从输出中删除这些列,但保留 SHA、行号和作者姓名。

我在the docs 中看到-f--show-filename 标记包含 文件名(即使它默认包含在内),但似乎没有标记删除文件名。我经常在单个文件上使用git blame,所以我已经知道我正在查看哪个文件。

我还看到了一个禁止作者姓名和时间戳 (-s) 的标志,但我更愿意保留作者姓名,所以这个标志不能满足我的需要。

我什至尝试将-s 标志与-e 标志结合起来(使用作者的电子邮件而不是他们的姓名),但该技巧未能为作者输出任何内容。

有什么想法吗?

【问题讨论】:

    标签: git git-blame


    【解决方案1】:

    如果没有这样的选项,可以使用sed

    git blame --date=short <filename> | sed -e 's, [^(]*, ,' -e 's, [^ ]*\( *[0-9]*)\), \1,'
    

    如果文件名中有括号,第一个正则表达式将需要微调。 (希望你不要)即使没有文件名它也能正常工作。

    【讨论】:

    • 你可以比这更短,使用 --date=short 将日期减少到单个字段,然后你的 sed 的 sed -e 's, [^(]*, ,' -e 's, [^ ]* \([0-9]*)\), \1,' 去除任何没有括号和短的文件名日期。
    • 感谢@jthill,根据您的评论调整了答案。
    • 这很好用。我将它包装在一个名为 gitb 的 bash 函数中,并将其隐藏在我的 .bash_profile 中。我用$1 参数替换了&lt;filename&gt;,现在我可以执行gitb Gemfile 之类的操作,并且输出看起来正是我想要的样子。干杯。
    • @RichieThomas 我做了一个小修复是正则表达式。错误是行号删除日期之前的可变空格数。
    猜你喜欢
    • 2016-04-19
    • 2013-12-03
    • 2022-01-06
    • 1970-01-01
    • 2016-08-03
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多