是否有一种简单的方法或命令可以将所有git提交到特定标记以生成项目的自动更改日志?我总是使用版本号v0.1.0
标记我的git repos,例如,我希望所有提交都标记为v0.1.0
。
我查看了文档,但似乎没有找到有用的选项或命令:http://git-scm.com/docs/git-log(顺便说一句,顺便说一下)
例如:
$ git log --oneline --decorate
显示提交旁边的标记。我想要一样,但只有特定的标签。
答案 0 :(得分:37)
你可以这样做:
git log --oneline --decorate v0.1.0
...显示每次提交,包括v0.1.0。当然,git log
允许您限制以git rev-list
理解的任何方式显示的提交,因此,如果您只想查看v0.0.9
和{{1}之间的更改你也可以这样做:
v0.1.0
可能对此目的有用的替代输出是git log --oneline --decorate v0.0.9..v0.1.0
的替代输出,它对每个作者的贡献进行分组和总结。试试,例如:
git shortlog
答案 1 :(得分:6)
为了按标签创建更新日志,我使用了这个脚本:
#!/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
答案 2 :(得分:3)
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
答案 3 :(得分:3)
有一个非常有用的gem,输出是用markdown编写的,添加问题支持和按标签拆分提交
答案 4 :(得分:2)
只需将 tagname
附加到您的命令就可以了:)我喜欢--graph
开关来显示导致该标记的分支:)
答案 5 :(得分:2)
只需使用标记名称作为提交说明符:git log --oneline --decorate v0.1.0
答案 6 :(得分:2)
我想出了原始脚本的这个修改。这会正确处理版本标记。
#!/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
答案 7 :(得分:0)
您可以使用Git Changelog Command Line进行此操作:
npx git-changelog-command-line -std -tr v0.1.0 -tec "
# Changelog
Changelog for {{ownerName}} {{repoName}}.
{{#tags}}
## {{name}}
{{#issues}}
{{#hasIssue}}
{{#hasLink}}
### {{name}} [{{issue}}]({{link}}) {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
{{/hasLink}}
{{^hasLink}}
### {{name}} {{issue}} {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
{{/hasLink}}
{{/hasIssue}}
{{^hasIssue}}
### {{name}}
{{/hasIssue}}
{{#commits}}
**{{{messageTitle}}}**
{{#messageBodyItems}}
* {{.}}
{{/messageBodyItems}}
[{{hash}}](https://github.com/{{ownerName}}/{{repoName}}/commit/{{hash}}) {{authorName}} *{{commitTime}}*
{{/commits}}
{{/issues}}
{{/tags}}
"
答案 8 :(得分:0)
使用https://pypi.org/project/changelogfromtags/
pip install changelogfromtags && changelogfromtags