Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git日志--before"&书信电报;日期>&引用;如果后跟一个早于<;日期>;_Git_Date - Fatal编程技术网

git日志--before"&书信电报;日期>&引用;如果后跟一个早于<;日期>;

git日志--before"&书信电报;日期>&引用;如果后跟一个早于<;日期>;,git,date,Git,Date,在其他承诺中,我有一份日期为2017年12月22日(4b9273bda1680867)。但当我运行git log时--“2017-12-28 00:00”之前,我得到的最新结果是2017-12-19(它是599241c3003的父母之一) 我怀疑这是因为4b9273bda1680的祖先比查询日期(599241c3003)新,但我找不到任何描述此行为的文档 * commit 1a5b54d74c6130fae9806a8716744801e2152270 (HEAD -> _)

在其他承诺中,我有一份日期为2017年12月22日(4b9273bda1680867)。但当我运行git log时--“2017-12-28 00:00”之前,我得到的最新结果是2017-12-19(它是599241c3003的父母之一)

我怀疑这是因为4b9273bda1680的祖先比查询日期(599241c3003)新,但我找不到任何描述此行为的文档

    *   commit 1a5b54d74c6130fae9806a8716744801e2152270 (HEAD -> _)
    |\  Merge: 599241c 872e57d
    | | Date:   Thu Dec 28 11:01:53 2017 +0100
    | |
    | * commit 872e57d860aa4323b394cd63cc050d4746600d93
    | | Date:   Thu Dec 28 10:58:43 2017 +0100
    | |
    | * commit 648833bd98e724e53697e2a4c2b765a1c23360ee
    | | Date:   Wed Dec 27 09:03:52 2017 +0100
    | |
    | * commit 4b9273bda16808672d6a484c5ddf7ba7e4b6a4be
    |/  Date:   Fri Dec 22 17:41:21 2017 +0100
    |
    *   commit 599241c3003e848fefc7316dbff6b64e75fbd744
    |\  Merge: 42507fd 069a9d3
    | | Date:   Thu Dec 28 11:00:45 2017 +0100

正如@RaymondChen和@torek提到的,提交有两个日期与之关联。“作者”日期标识您第一次运行
git commit
的时刻,“提交”日期为任何重新应用提交的时间戳(例如,
--amend
s,
rebase
,…)。你可以在网站上阅读更多关于他们的信息

git日志-1的输出--pretty=fuller 4b927:

commit 4b9273bda16808672d6a484c5ddf7ba7e4b6a4be
...
AuthorDate: Fri Dec 22 17:41:21 2017 +0100
...
CommitDate: Thu Dec 28 11:01:29 2017 +0100
另外,根据
git log
的规定,git日志不允许按作者的日期进行过滤(即使这是输出中的默认值)。按作者日期筛选的唯一方法是使用一些脚本魔法。 我的bash实现:

# git-author-date-before()
# ------------------------
# args:
#   $1 - unix timestamp for limiting date
#   $@ - any additional arguments will be passed to `git show`.
# example usages:
#
#   git-author-date-before 1514415600
#   git-author-date-before $(date -j -f '%Y %m %d %H %M %S' '2017 12 23 00 00 00' '+%s') --pretty=fuller
#
function git-author-date-before() {
  END_TIMESTAMP="$1"; shift;
  git log --format="%at %H" \
  | sort -r \
  | awk -v t1=$END_TIMESTAMP '$1 <= t1 { print; }' \
  | cut -d ' ' -f 2 \
  | xargs git show "$@"
}
#git-author-date-before()
# ------------------------
#args:
#$1-限制日期的unix时间戳
#$@-任何其他参数都将传递给“git show”。
#示例用法:
#
#git作者日期1514415600之前
#git作者日期早于$(日期-j-f'%Y%m%d%H%m%S''2017 12 23 00 00 00'+%S')--pretty=fuller
#
函数git-author-date-before(){
END_TIMESTAMP=“$1”移位;
git日志--format=“%at%H”\
|sort-r\

|awk-vt1=$END\u TIMESTAMP'$1
--before
对提交时间进行操作。但是默认情况下,
git log
只显示作者时间。这很可能是@RaymondChen所说的。要检查,请运行
git log-1--pretty=fuller 4b9273bda1680867
查看提交时您认为应该包含的作者和提交人日期不包括在内。