git status - 列出上次修改日期

cai*_*ona 33 git

使用git,是否可以列出未分段文件的最后修改日期及其路径?使用例如.

git status

要么

git diff --name-only

fge*_*fge 47

不是直接但你可以使用管道:

注意:根据评论更新原始答案

Linux的:

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

视窗:

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

OSX(来源):

git status -s | while read mode file; do echo $mode $(stat -f "%m" $file) $file; done|sort
Run Code Online (Sandbox Code Playgroud)

  • 这有用 - 有一点需要注意 - 我在Windows上使用msysgit似乎`stat`不可用.但我发现我可以使用`date`而不是这样:`git status -s | 读取模式文件; do echo $ mode $(date --reference = $ file +"%Y-%m-%d%H:%M:%S")$ file; done` (10认同)
  • 在我的Mac上,`stat -c`似乎不起作用.我是这样做的:`git status -s | 读取模式文件; 做echo $ mode $(stat -f"%m"$ file)$ file; 做| sort`.来源:http://stackoverflow.com/a/10198387/2486953 (5认同)
  • 不适用于路径 $file 中的空格。也不起作用:“$file”。 (2认同)

Von*_*onC 15

注意:我需要按日期排序修改后的文件,所以我修改了echo:

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

一条线:

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

通过首先回显date(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
Run Code Online (Sandbox Code Playgroud)

那是:

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