【问题标题】:git log exclude renamesgit log 排除重命名
【发布时间】:2013-02-28 08:15:11
【问题描述】:

我可以列出文件的提交,即使它已被重命名或移动

git log --follow foo.sh

但是,我想“关注”文件,但只列出文件实际更改的提交。类似的东西

git log --follow --exclude-renames foo.sh

【问题讨论】:

  • 我尝试通过--grep="renamed:" --invert-grep 的提交消息过滤它,但对我来说这不起作用。但是相反方向--grep="renamed:" 分叉并仅显示消息中包含“重命名:”测试的提交。但请记住,如果只是按消息过滤,则不能尊重混合重命名和更改的提交。

标签: git


【解决方案1】:
git log --follow --name-status --oneline foo.sh | sed 'h;N;/\nR/d;g'
  • 复制提交行以保留空间
  • 读入第二行
  • 如果找到以R开头的行,则删除模式空间并开始下一个循环, 否则将保持空间复制到模式空间

感谢jthill

【讨论】:

    【解决方案2】:

    有点像“nicely display file rename history in git log”,您可以添加--name-status,以便:

    • 不选择(grep -v重命名:状态'Rxxx',同时保留添加'A'或修改'M')
    • 仍然通过不同的名称跟踪文件

    但这仍将涉及对 git log 命令(使用 grep 和/或 sed)进行后处理以获得所需的输出:目前还没有原生的 '--exclude-renames' 类选项。

    【讨论】:

    • 看到 '--exclude-renames' 选项如何比仅仅提供 sed 来做这件事要短两个字节,我很难看到另一个选项名的意义...... :-)
    猜你喜欢
    • 1970-01-01
    • 2015-12-25
    • 2016-06-16
    • 1970-01-01
    • 2011-03-07
    • 2017-07-11
    • 2016-02-18
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多