git status - 列出最后修改日期

43
使用git,是否有可能在未暂存的文件旁列出其最后修改日期和路径?例如使用:
git status
或者
git diff --name-only
2个回答

69

虽然不能直接实现,但您可以使用管道(pipe):

注:原回答已根据评论进行更新

Linux系统:

git status -s | while read mode file; do echo $mode $file $(stat -c %y $file); done

Windows:

git status -s | while read mode file; do echo $mode $(date --reference=$file +"%Y-%m-%d %H:%M:%S") $file; done

OSX (来源):

git status -s | while read mode file; do echo $mode $(stat -f "%Sm" $file) $file; done|sort

10
这段内容的含义是:这个方法是可行的,但有一个限制——我在Windows上使用msysgit时似乎无法使用“stat”。但我已经发现可以用“date”代替,“date”用法如下:git status -s | while read mode file; do echo $mode $(date --reference=$file +"%Y-%m-%d %H:%M:%S") $file; done - caitriona
5
在我的 Mac 上,stat -c 命令好像不起作用。我是这样做的:git status -s | while read mode file; do echo $mode $(stat -f "%m" $file) $file; done|sort。来源:https://dev59.com/gmLVa4cB1Zd3GeqPz84S#10198387。 - user2486953
2
不支持路径中的空格或者$file。同时也不支持"$file"。 - qräbnö
在macOS Catalina上,此列表显示文件及其大小等信息,但没有日期。 - Jonny
1
如果有删除文件,那么会出现许多“没有此文件或目录”的错误。要忽略已删除的文件,在Linux上使用 git status -s | while read mode file; do if [ "$mode" != "D" ]; then echo $mode $file $(stat -c %y $file); fi; done - keineahnung2345

17
注意:我需要按日期对修改后的文件进行排序,因此我修改了 echo 命令:
git status -s | while read mode file; \
  do echo $mode $(stat -c %y $file) $file; \
done|sort -k1,4

一行:

 git status -s | while read mode file; do echo $mode $(stat -c %y $file) $file; done|sort -k1,4

通过首先回显日期(stat),然后是文件,我能够按从最旧到最新的修改顺序进行排序。


Sam Hasler评论中补充说:

为了保留空格 在模式中:

IFS=''; git status -s | while read -n2 mode; read -n1; read file; do echo $mode $(stat -c %y "$file") $file; done|sort

也就是说:

IFS=''; git status -s | while read -n2 mode; read -n1; read file; \ 
  do echo $mode $(stat -c %y "$file") $file; \ 
done|sort

保留 mode 中的空格: IFS=''; git status -s | while read -n2 mode; read -n1; read file; do echo $mode $(stat -c %y "$file") $file; done|sort -k1.4 - Sam Hasler
@SamHasler 很好的观点。我已经将您的评论包含在答案中,以增加其可见性。 - VonC
我更喜欢你的解决方案而不是提出的那个。然而,我认为你在排序命令中犯了一个错误。你应该使用逗号(sort -k1,4),而不是点(sort -k1.4)。点指定字段中的一个字符,而我猜你想要按前4个字段排序。 - Alex Stylianos
@AlexStylianos 同意。我已相应地编辑了答案。 - VonC

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