列出在两个日期之间新添加的文件(由任何人添加)。

6
我该如何列出在两个日期(或两个提交之间)的提交中新增的文件?我想看到:
  1. 文件路径
  2. 提交者/提交信息
  3. 提交引用
3个回答

8

这是我使用的内容:

git log --diff-filter=A --name-only --pretty=oneline --abbrev-commit ref1..ref2

此外,输出结果易于解析。去掉 --abbrev-commit 选项可以使用 SHA-1 来进行某些任务。

2
谢谢,这非常方便。你可以使用--oneline来缩短它一点,它是--pretty=oneline --abbrev-commit的简写。 - rosuav

6

git log --stat 命令可以给出一个很好的提交摘要,其中包含有关更改文件的详细信息:

commit bde0ce475144ec85a1cb4ffeba04815412a07119
Author: Stephen Holdaway <xxxxx@xxxxx.com>
Date:   Thu Sep 20 13:55:12 2012 +1200

    fix default rotation issue

 Menus/MainMenuViewController.m   |   17 +++++++++++++----
 Menus/PostGameViewController.m   |   14 +++++++++++++-
 Menus/StatsMenuController.m      |   10 +++++-----
 4 files changed, 31 insertions(+), 11 deletions(-)

你可以尝试在两个日期之间使用以下方法:
git log --since "10 Sep 2012" --until "12 Nov 2012" --stat

这是两次提交之间的内容:

git log --stat xxxxxxx..xxxxxxx

真棒!你知道我怎样可以看到每个文件的完整路径吗? - Synesso
你可以使用 --stat-name-width=1000 --stat-width=1000 来防止路径被缩短。你也可以添加 --name-only 以使输出更加清晰。详见 Making git diff --stat show full file path 获取更多细节。 - Stecman
另外,如果您只想显示新添加的文件,可以使用 --diff-filter=A,但是除非您添加 --name-status(在这种情况下输出与 @atkretsch 发布的答案相同),否则输出不是特别清晰。 - Stecman

4
你也可以使用git show。它类似于git log,但有一个--name-status参数,可以让你一次得到路径名和添加/修改/删除的标志(注意,第一个答案中描述的git log不仅限于新文件,并且不显示状态指示器)。
$ git show --pretty=fuller --name-status HEAD^..HEAD
commit 3c92149119e69b4520b4ea317f221aade9f41b0e
Author: John Doe <xxxx@xxxxxx>
AuthorDate: Fri Nov 9 15:46:05 2012 -0600
Commit: John Doe <xxxx@xxxxxx>
CommitDate: Fri Nov 9 15:46:05 2012 -0600

Added some files, modified some other files

A       src/main/java/com/test/app/NewFile1.java
A       src/main/java/com/test/app/NewFile2.java
M       src/main/java/com/test/app/OldFile1.java
M       src/main/java/com/test/app/OldFile2.java

也许可以通过git log获取这些信息(它们可能在幕后使用相同的基本信息),但我还没有弄清楚。

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