'git status' 命令给出自上次提交以来更改的文件列表。
带有 mmin 或 mtime 选项的 find 命令给出在给定时间长度内保存的文件列表。但它也将包括我编辑过的文件,然后撤消更改,即那些内容尚未更改的文件。
我需要的是获取在给定时间长度内已修改(内容已更改)的文件列表。可能吗 ?
谢谢
你想要的是 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-tree
whatchanged
rev-list
diff-tree
diff-tree
--diff-filter
仅选择已添加 (A)、已复制 (C)、已删除 (D)、已修改 (M)、已重命名 (R)、类型(即常规文件、符号链接、子模块...)已更改 (T) 的文件、未合并 (U)、未知 (X) 或它们的配对已损坏 (B)。
如果你想直接使用rev-list
和diff-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