Git日志排除重命名

4
我可以列出文件的提交记录,即使它已被重命名或移动。
git log --follow foo.sh

然而,我想要“关注”文件,但只列出实际更改了该文件的提交记录。类似于:
git log --follow --exclude-renames foo.sh

我尝试使用 --grep="renamed:" --invert-grep 根据提交消息进行过滤,但对我来说这并没有起作用。但是相反的方向 --grep="renamed:" 分叉并仅显示包含消息中 "renamed:" 测试的提交。但请记住,如果仅按消息进行过滤,则无法考虑具有混合重命名和更改的提交。 - Radon8472
3个回答

2
git log --follow --name-status --oneline foo.sh | sed 'h;N;/\nR/d;g'
  • 复制提交行到保持空间
  • 读取第二行
  • 如果找到以 R 开头的行,则删除模式空间并启动下一个循环,否则将保持空间复制到模式空间

感谢 jthill


2

刚刚发现了--diff-filter选项,可以通过它排除重命名操作。

--diff-filter=r

所以,

git log --follow --diff-filter=r foo.sh

感谢@Zombo对--name-status选项的回答。


1

在 " nicely display file rename history in git log" 中,你可以添加 --name-status 以便:

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

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


由于“--exclude-renames”选项比仅提供sed命令短两个字节,我很难看出为什么还需要另一个选项名称... :-) - jthill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接