GitReleaseNoteGenerator 4.0.0

dotnet tool install --global GitReleaseNoteGenerator --version 4.0.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local GitReleaseNoteGenerator --version 4.0.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=GitReleaseNoteGenerator&version=4.0.0
                    
nuke :add-package GitReleaseNoteGenerator --version 4.0.0
                    

GitReleaseNoteGenerator

A .NET global tool that generates categorized release notes from git commit history using the GitHub API.

Requirements

The tool ships builds for .NET 10 and .NET 11, so either runtime must be installed.

Installation

dotnet tool install -g GitReleaseNoteGenerator

Quick Start

# Generate release notes for a version
git-release-notes --token <GITHUB_PAT> --owner myorg --repo myrepo --release-version v2.0.0

# Write the notes to a file
git-release-notes --token <GITHUB_PAT> --owner myorg --repo myrepo --release-version v2.0.0 --output-file release-notes.md

# Write the notes to GITHUB_OUTPUT in CI
git-release-notes --token <GITHUB_PAT> --owner myorg --repo myrepo --release-version v2.0.0 --github-output --output-name changelog

Version: --release-version is required. Compute it in your pipeline — for example with Nerdbank.GitVersioning (nbgv) or MinVer — and pass the result in.

CLI Reference

Option Type Default Description
--token string GITHUB_TOKEN env var GitHub personal access token
--owner string From GITHUB_REPOSITORY env Repository owner
--repo string From GITHUB_REPOSITORY env Repository name
--base-ref string Latest release tag Base ref to compare from
--head-ref string Default branch Head ref to compare to
--release-version string required Version string for the heading
--output-file path (none) Write release notes to a file
--github-output flag false Write to GITHUB_OUTPUT
--output-name string changelog Variable name for GITHUB_OUTPUT

Commit Prefix Categories

Commits are categorized by their conventional-commit-style prefix:

Prefix Category Emoji
break Breaking Changes 💥
feat Features ✨
refactor Refactoring ♻️
fix, bug Fixes 🐛
perf Performance ⚡
housekeeping, chore, update General Changes :broom:
test Tests ✅
doc Documentation 📝
style Style Changes 💅
dep Dependencies 📦

Commits from dependabot[bot] and renovate[bot] are automatically categorized as Dependencies.

How Commits Are Collected

  • With a base ref (the latest release tag by default), the commits come from the GitHub compare API. It is read page by page until every commit in the range is collected.
  • With no releases yet, the whole history reachable from the head ref is used.
  • Contributors who already appear in the history reachable from the base ref are not listed as new contributors.
  • Rate limits are waited out for as long as GitHub asks (x-ratelimit-reset or Retry-After). Server errors and network failures are retried up to three times with exponential backoff.

GitHub Actions Usage

name: Create Release
on:
  push:
    tags: ['v*']
jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v7
        with:
          fetch-depth: 0
      - uses: actions/setup-dotnet@v6
        with:
          dotnet-version: '10.0.x'
      - run: dotnet tool install -g GitReleaseNoteGenerator
      - name: Generate Release Notes
        env:
          GITHUB_TOKEN: ${{ github.token }}
        run: git-release-notes --release-version ${{ github.ref_name }} --output-file release-notes.md
      - name: Create GitHub Release
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh release create "${{ github.ref_name }}" --title "${{ github.ref_name }}" --notes-file release-notes.md

Migration from ChangeLog Action

If you are migrating from the ChangeLog GitHub Action:

  1. Replace the glennawatson/ChangeLog@... step with the dotnet tool install and run steps shown above.
  2. The commit prefix categories and emoji mappings are the same.
  3. Use --output-file with gh release create --notes-file instead of action outputs.
  4. The GITHUB_TOKEN environment variable is read automatically when --token is not specified.

License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed.  net11.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
4.0.0 101 9/24/2026
3.1.1 227 8/6/2026
3.1.0 273 7/3/2026
3.0.0 126 7/3/2026
2.0.0 246 6/1/2026
1.0.9 254 2/21/2026