我需要使用特定格式打印最新的10个特定日期的提交。我需要处理通过bash命令获得的日期:
date +"%Y%m%d%H%M"
我尝试了一些选项,但到目前为止没有任何选择
e.g.: git log -5 --no-merges --format=format:%cd --after=201506301524
答案 0 :(得分:1)
您需要使用--until
代替--after
以及更正确的日期格式,但您可以使用date
进行转换:
git log --no-merges --format=format:%cd -10 --until "$(date -d "$(echo "201506301524" | sed 's/....$/ &/')")"
$(echo "201506301524" | sed 's/....$/ &/')
转换
20150630 1524
的日期,这是日期的有效输入格式。
答案 1 :(得分:0)
您必须格式化日期,只有数字不会。使用其中之一:
--after=2015-06-30-15:24:00
--after=2015-06-30:16:24:00
--after="2015-06-30 16:24:00"
所有这些格式都被接受了。
答案 2 :(得分:0)
首先,您需要使用正确的日期格式(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
将不会返回您想要的内容,因为它会记录10个最新提交,然后反转列表(这意味着您将获得相同的列表,无论指定日期如何。)
另一种方法是在此结果上使用head
:
git log --reverse --no-merges --format=format:%cd --after="2015-06-30 15:24:00" | head -10