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