git diffdate?

我习惯于运行一个git比较,以便与本地git revs进行比较,如:

git diff HEAD HEAD~110 -- some/file/path/file.ext 

是否有可能使用date呢? 如果是的话,怎么样? 我希望能在上面的例子中插入代替“110”的date,如“2012年12月4日”。

 git diff HEAD 'HEAD@{3 weeks ago}' -- some/file/path/file.ext 

严格来说,这不是三周前的修订。 相反, HEAD是在现在的三周之前。 但是,为了您的目的,这可能已经足够接近了 – 如果当前分支的HEAD稳步前进,那将是非常准确的。 您可以通过使用分支名称而不是HEAD来提高准确性。

您可以使用HEAD@{1979-02-26 18:30:00}类的date/时间来代替现在的偏移量。 请参阅git help rev-parse

结合Jonathan Stray的build议,使用git-rev-list --before在给定的date查找修订,并在Git中显示当前分支 :

 #!/bin/sh if [ $# -eq 0 ] || [ "$1" = "--help" ]; then cat <<EOF Usage: $0 DATE FILE... git diff on FILE... since the specified DATE on the current branch. EOF exit fi branch1=$(git rev-parse --abbrev-ref HEAD) revision1=$(git rev-list -1 --before="$1" "$branch1") shift revision2=HEAD git diff "$revision1" "$revision2" -- "$@" 

用一个date和可选的一些文件名来调用这个脚本,例如

 git-diff-since yesterday git-diff-since '4 Dec 2012' some/file/path/file.ext 

你想要的就是这个。

 git diff HEAD '@{3 weeks ago}' -- some/file/path/file.ext 

您应该比较@{3 weeks ago} ,而不是HEAD@{3 weeks ago}

有什么区别?

如果你3周前在另一个分支上, HEAD@{3 weeks ago}会指向分支的HEAD,另一方面@{3 weeks ago}会指向当前分支的HEAD。

你也可以明确地命名分支。

 git diff HEAD 'master@{3 weeks ago}' -- some/file/path/file.ext