使用 GIT 以特定格式显示早于特定日期的提交

With GIT show commits older than a specific date with specific format

我需要以特定格式打印早于特定日期的最新 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"):

git log --no-merges --format=format:%cd --after="2015-06-30 15:24:00"

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

git log --reverse --no-merges --format=format:%cd --after="2015-06-30 15:24:00"

不幸的是,git log --reverse -10 不会 return 你想要的,因为它会抓取 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 的日期,这是日期的有效输入格式。