虽然已有古老Q &答:我以为我会扔一个,因为这一直困扰着我很长一段时间。
我用来以反向时间顺序列出目录中的文件(好笑,我呢?)。原因是我想看看我有哪些文件(或其他人有)最近更改过。
Git会搅乱我的计划,因为当切换分支时,本地回购将完全覆盖来自(增量......我知道......)位于打包本地回购库中的跟踪文件。
这样所有签出的文件将带有结账的时间戳,并且不会反映他们上次修改时间.....这是多么令人讨厌。
所以,我设计在bash一行程序,将更新$日期:$财产的任何文件内部进行最后的修改,根据它有什么于文件系统这样我将有一个的时间即时状态最后修改,无需浏览git log
,git show
或任何其他工具,其中指定模式下的提交时间。
以下过程将仅修改将要提交到回购的跟踪文件中的$ Date:$关键字。它使用git diff --name-only
这将列出被修改的文件,没有别的....
我在提交代码之前手动使用这一行。但有一点是我必须在应用这个之前导航到repo的根目录。
这里的
git diff --name-only | xargs stat -c "%n %Y" 2>/dev/null | \
perl -pe 's/[^[:ascii:]]//g;' | while read l; do \
set -- $l; f=$1; shift; d=$*; modif=`date -d "@$d"`; \
perl -i.bak -pe 's/\$Date: [\w \d\/:,.)(+-]*\$/\$Date: '"$modif"'\$/i' $f; \
git add $f; done
和OSX
git diff --name-only | xargs stat -f "%N %Sm" | while read l; do \
set -- $l; f=$1; shift; d=$*; modif=`date -j -f "%b %d %T %Y" "$d"`; \
perl -i.bak -pe 's/\$Date: [\w \d\/:,.)(+-]*\$/\$Date: '"$modif"'\$/i' $f; \
git add $f; done
我发现这一点,使用Git项目工作相当不错的Linux代码变种(粘贴为多行以提高可读性): HTTPS ://github.com/turon/git-rcs-keywords – Mark 2013-02-20 07:04:09