3

'git status' 命令给出自上次提交以来更改的文件列表。

带有 mmin 或 mtime 选项的 find 命令给出在给定时间长度内保存的文件列表。但它也将包括我编辑过的文件,然后撤消更改,即那些内容尚未更改的文件。

我需要的是获取在给定时间长度内已修改(内容已更改)的文件列表。可能吗 ?

谢谢

4

1 回答 1

2

你想要的是 Git whatchanged

这是一个用于显示添加文件的示例whatchanged(我没有碰巧在我使用的测试存储库中修改过文件,但是您可以轻松地将结果限制为修改过的文件而不是添加的文件):

$ git whatchanged --after='2012-07-07 17:20' --before='2012-07-28 23:31' --diff-filter=A -r --oneline --name-only
82b9dcf F
E/F
95a02ce D
D

如手册中所述,在幕后whatchanged使用rev-list和,并且还使用和可用的选项。该选项将:diff-treewhatchangedrev-listdiff-treediff-tree --diff-filter

仅选择已添加 (A)、已复制 (C)、已删除 (D)、已修改 (M)、已重命名 (R)、类型(即常规文件、符号链接、子模块...)已更改 (T) 的文件、未合并 (U)、未知 (X) 或它们的配对已损坏 (B)。

如果你想直接使用rev-listdiff-tree(避免提交日志whatchanged想要输出),你可以使用:

$ git diff-tree --diff-filter=A -r --name-only $(git rev-list -n 1 --before='2012-07-07 17:20' HEAD) $(git rev-list -n 1 --before='2012-07-28 23:31' HEAD)
D
E/F
于 2012-08-04T18:01:55.453 回答