With GIT show以特定格式提交早于特定日期的内容

With GIT show以特定格式提交早于特定日期的内容,git,bash,date,git-commit,Git,Bash,Date,Git Commit,我需要以特定格式打印比特定日期早的最近10次提交。我需要处理通过bash命令获得的日期: date +"%Y%m%d%H%M" 我尝试了一些选择,但到目前为止什么都没有 e.g.: git log -5 --no-merges --format=format:%cd --after=201506301524 你必须格式化日期,只有数字不行。使用其中一种: --after=2015-06-30-15:24:00 --after=2015-06-30:16:24:00 --after="201

我需要以特定格式打印比特定日期早的最近10次提交。我需要处理通过bash命令获得的日期:

 date +"%Y%m%d%H%M"
我尝试了一些选择,但到目前为止什么都没有

e.g.: git log -5 --no-merges --format=format:%cd --after=201506301524

你必须格式化日期,只有数字不行。使用其中一种:

--after=2015-06-30-15:24:00
--after=2015-06-30:16:24:00
--after="2015-06-30 16:24:00"

所有这些格式都被接受。

首先,您需要使用正确的日期格式(
date+%Y-%m-%d%H:%m:00“
):

现在,您可以使用
--reverse
首先获取最早的提交:

git log --reverse --no-merges --format=format:%cd --after="2015-06-30 15:24:00"
不幸的是,
git log--reverse-10
不会返回您想要的内容,因为它会记录10次最新提交,然后反转列表(这意味着您将得到相同的列表,无论指定的日期是什么)

另一种选择是在这个结果上使用
head

git log --reverse --no-merges --format=format:%cd --after="2015-06-30 15:24:00" | head -10
您需要使用
--until
而不是
--after
以及正确的日期格式,但您可以使用
date
将其转换为:

git log --no-merges --format=format:%cd -10 --until "$(date -d "$(echo "201506301524" | sed 's/....$/ &/')")"
$(echo“201506301524”| sed's/…$/&/)
转换
日期为
20150630 1524
,这是日期的有效输入格式。

这是否因为git不喜欢该日期格式而不起作用(您收到一个错误)?它不起作用是因为你没有得到你期望的承诺吗?还有别的吗?
git log --no-merges --format=format:%cd -10 --until "$(date -d "$(echo "201506301524" | sed 's/....$/ &/')")"