Git changelog:如何获取所有更改到特定标签?
有没有一种简单的方法或命令来获取所有git提交到特定标签以生成项目的自动更新日志?我总是用v0.1.0
等版本号标记我的git回购站,并且例如要将所有提交标记为v0.1.0
。Git changelog:如何获取所有更改到特定标签?
我已经通过文档看了,但似乎并没有为它找到一个有用的选项或命令:http://git-scm.com/docs/git-log(是下来的方式目前)
例如:
$ git log --oneline --decorate
显示提交旁边的标签。我想要一样的,但只限于特定的标签。
分支机构你可以这样做:
git log --oneline --decorate v0.1.0
...显示每个提交到并包括v0.1.0。当然,git log
允许,您还可以限制任何的那git rev-list
理解的方式显示的提交,所以如果你只是想看看v0.0.9
之间的变化和v0.1.0
你也可以这样做:
git log --oneline --decorate v0.0.9..v0.1.0
替代输出可能对此有用的是git shortlog
,它对每个作者的贡献进行分组和总结。试一下,比如:
git shortlog v0.1.0
感谢您的精心解答:)这正是我想要的。 – Luwe
要显示特定标记后的提交,您可以使用'git log --oneline --decorate v0.1.0..' –
如何在运行git命令后复制日志,即git log --oneline --decorate? –
只需追加tagname
你的指挥,你应该罚款:)我喜欢--graph
切换到可视化导致了标签:)
只需使用标签名,提交符:git log --oneline --decorate v0.1.0
对于由标签创建的changelog,我用这个脚本:
#!/bin/bash
# Author:Andrey Nikishaev
echo "CHANGELOG"
echo ----------------------
git tag -l | sort -u -r | while read TAG ; do
echo
if [ $NEXT ];then
echo [$NEXT]
else
echo "[Current]"
fi
GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT
NEXT=$TAG
done
FIRST=$(git tag -l | head -1)
echo
echo [$FIRST]
GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST
如果您的标签是xyz表单上的版本,请将'-V'标志添加到'sort'以正确地对1.0版本进行排序.9,1.0.10等 –
到脚本更新由Creotiv建议,以便更好地分选标签
#!/bin/bash
# Author:Andrey Nikishaev, Gunnar Lindholm
echo "CHANGELOG"
echo ----------------------
git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags |tac |grep -v '^$' | while read TAG ; do
echo
if [ $NEXT ];then
echo [$NEXT]
else
echo "[Current]"
fi
GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT
NEXT=$TAG
done
FIRST=$(git tag -l | head -1)
echo
echo [$FIRST]
GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST
犯我想出了原剧本的这种修改。这会正确处理版本标记。
#!/bin/bash
# Author:Andrey Nikishaev
echo "CHANGELOG"
echo ----------------------
git tag -l --sort=v:refname | tac | while read TAG ; do
echo
if [ $NEXT ];then
echo [$NEXT]
else
echo "[Current]"
fi
GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT
NEXT=$TAG
done
FIRST=$(git tag -l --sort=v:refname | head -1)
echo
echo [$FIRST]
GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST
与您的兴趣相关:Pimp My Changelog,这是一个Ruby脚本。 https://github.com/pcreux/pimpmychangelog – olleolleolle