【问题标题】:finding out the last modified time of all modified files in git找出git中所有修改文件的最后修改时间
【发布时间】:2015-09-09 23:51:28
【问题描述】:

如果我这样做git status,我会看到一堆更改的文件和一些新文件。我希望能够查看每个文件的最后修改时间(并从那里查看哪个是最旧/最新的),但我不清楚如何做到这一点。有什么想法吗?

【问题讨论】:

  • 你想看看具体几点?上次修改文件的提交时间或自最近一次提交以来修改文件的时间(导致它显示在git status 输出中的修改)?其他时间?
  • 如果您使用ls -latr,它会显示最后修改时间。由于我只想查看尚未添加或提交的新文件或已修改文件,因此我想这是自最近提交以来修改文件的时间。
  • 那么您想要git status 输出中列出的每个文件的文件系统修改时间?

标签: linux git bash ubuntu


【解决方案1】:

肯定有更好的方法,但有效的方法是

$ git ls-files --debug
yaml_parse.py
  ctime: 1434026542:225611371
  mtime: 1433442706:0
  dev: 34   ino: 17436117
  uid: 33156    gid: 4720
  size: 5065    flags: 0

$ cvttime 1433442706
1433442706 = 2015-06-04 Thu 18:31:46 +0000 (UTC)

【讨论】:

  • 对于那些对cvttime 摸不着头脑的人:它似乎是在this post 中定义的awk(1) 函数。它的另一个perl 版本可能如下所示:perl -E 'say scalar localtime shift' 1433442706
【解决方案2】:

提交的文件信息

git ls-tree -r --name-only HEAD | while read filename; do
  echo "$(git log -1 --format="%ad" -- $filename) $filename"
done

没有提交信息的修改文件

git status --porcelain | awk {'print $2'} | while read filename; do 
  echo -n $filename ' ' ; stat $filename | grep Modify;
done

【讨论】:

  • 这个echo 应该是printf 但这没什么大不了的。这也是修改文件的最近提交的日期,而不是使文件列在git status 中的当前修改的日期/时间。
猜你喜欢
  • 1970-01-01
  • 2011-01-15
  • 2016-01-20
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多