Git changelog:如何将所有更改都添加到特定标记?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git changelog:如何将所有更改都添加到特定标记?相关的知识,希望对你有一定的参考价值。
是否有一种简单的方法或命令可以将所有git提交到特定标记以生成项目的自动更改日志?我总是使用像v0.1.0
这样的版本号来标记我的git repos,例如,我希望所有提交都标记为v0.1.0
。
我查看了文档,但似乎没有找到一个有用的选项或命令: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
为了按标签创建更改日志,我使用了以下脚本:
#!/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
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
有一个非常有用的gem,输出用markdown编写,添加问题支持和按标签拆分提交
https://github.com/kebab-project/katip
只需将tagname
附加到您的命令,你应该没问题:)我喜欢--graph
开关来显示导致该标签的分支:)
只需使用标记名称作为提交说明符:git log --oneline --decorate v0.1.0
我想出了原始脚本的这个修改。这会正确处理版本标记。
#!/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
以上是关于Git changelog:如何将所有更改都添加到特定标记?的主要内容,如果未能解决你的问题,请参考以下文章