git - 如何列出作者在提交范围内修改的所有文件,但仅列出 Git 中文件发生的最后一件事?

标签 git git-commit git-log

命令:

 git log --oneline --name-status 
         --author=$AUTHOR $COMMIT_RANGE | grep -vE '[a-fA-F0-9]{5} ' 
         | sort | uniq | cat -n

返回作者在一系列提交之间修改的文件列表,状态为例如M 表示修改。

 1  M   a_file
 2  M   another_file
 3  M   file
 4  D   file

我怎样才能只显示文件 file 发生的最后一件事,例如这里它被删除了 (D)?

我不想看到之前对文件的修改(即 M),只希望看到在该提交范围内发生的最后一件事。

感谢关注!

最佳答案

您可以调整 uniq 以仅查看特定字段:

git log --oneline --name-status 
         --author=$AUTHOR $COMMIT_RANGE | grep -vE '[a-fA-F0-9]{5} ' 
         | sort -r | uniq -f 1 | tac | cat -n

我还使用了 tac 再次反转输出。不过你可以不提它。它也是一个 GNU 实用程序,您在 BSD/OS X 机器上找不到它。

关于git - 如何列出作者在提交范围内修改的所有文件,但仅列出 Git 中文件发生的最后一件事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34650270/

相关文章:

git - 如何从 git 中排除 typescript 编译的文件

git - 有没有编写自定义 git merge 策略的文档?

git-commit - 适用于 Windows 的 GitHub : How to commit only a part of the file?

Git:如何在没有以前所有历史记录的情况下挑选提交

Git merge 冲突 : Cannot find the problem

git log pull 对象以获取 Shortstats

java - 如何将现有的 IntelliJ Java 项目添加到 git?

git - 源树 : how to do a git diff in the opposite direction?

git:如何 "consolidate"本地提交

powershell - 在 Powershell 中转义以获取 git log