GIT-CHANGELOG(1)

πŸ’– GIT-CHANGELOG(1) β€” the git-changelog glow-up guide πŸ’–

okay bestie, sit down, hydrate, and let me tell you about git-changelog from the Git Extras girlies. it generates a changelog report, and it's giving organized, it's giving documented, and honestly? we're obsessed.


✨ NAME ✨

git-changelog β€” generate a changelog report. that's it. that's the job. slay.


πŸŽ€ SYNOPSIS πŸŽ€

git-changelog [options] [<file>]
git-changelog {-h | --help | ?}

πŸ¦‹ DESCRIPTION πŸ¦‹

so basically you can customize the changelog format through some git config options. lowkey the most fun part. here's the tea:

  • git config changelog.format $format β€” this controls the format of each commit. it gets passed as git log --pretty=format:$format. the default value is * %s.
  • git config changelog.mergeformat $format β€” like changelog.format but it's only used when --merges-only is specified. the default value is * %s%n%w(64,4,4)%b.

periodt. those two configs are the whole vibe controller.


πŸ’… OPTIONS πŸ’…

  • <file> β€” the name of the output file. by default the new file will be History.md β€” unless an existing changelog is detected, in which case the existing file will be updated instead. it reads the room, basically.
  • -a, --all β€” (the original page gives this one no description, bestie. iconic mystery energy, we respect it πŸ’€)
  • -l, --list β€” show commits in list format (so: no titles, no dates). just the raw commit guts.
  • -t, --tag β€” specify a tag label to use for the most-recent (untagged) commits.
  • -f, --final-tag β€” when you're specifying a range, this is the newest tag at which point commit retrieval will end. commits will be returned from the very first commit until the final tag, unless a start tag is also specified.
  • -s, --start-tag β€” when you're specifying a range, this is the oldest tag to retrieve commits from. commits will be returned from the start tag to now, unless a final tag is also specified.
  • --start-commit β€” like the --start-tag but you specify the oldest commit instead of a tag. heads up: the specified commit will be contained in the changelog. inclusive queen.
  • -n, --no-merges β€” filters out merge commits (commits with more than 1 parent) from the generated changelog. goodbye merges 🫢
  • -m, --merges-only β€” uses only merge commits (commits with more than 1 parent) for the generated changelog. it also changes the default format to include the merge commit message's body, because on github the commit subject line only contains the branch name and no information about the content of the merge. so like, the body is where the actual plot is.
  • -p, --prune-old β€” replace the existing changelog entirely with the newly generated content, thereby disabling the default behavior of appending the content of any detected changelog to the end of the newly generated content. fresh start, no baggage, main character move.
  • -x, --stdout β€” write output to stdout instead of to a new changelog file.
  • -h, --help, ? β€” show a help message with basic usage information.

🌈 EXAMPLES 🌈

the original page lists these lovely scenarios, in this exact order:

  1. Updating existing file or creating a new History.md file with pretty formatted output:
  2. Listing commits from the current version:
  3. Listing a range of commits from 2.1.0 to now:
  4. Listing a pretty formatted version of the same:
  5. Listing a range of commits from initial commit to 2.1.0:
  6. Listing a pretty formatted range of commits between 0.5.0 and 1.0.0:
  7. Listing a pretty formatted range of commits between 0b97430 and 1.0.0:
  8. Specifying a file for output:
  9. And if an existing Changelog exists, replace its contents entirely:
ngl, the source page lays out these intros but doesn't print the actual commands under them β€” so this is the full list of what it promises, verbatim-ish and in order. no skipping, no summarising, we keep every crumb. ✨

πŸ‘‘ AUTHOR πŸ‘‘

Written by Mark Eissler <mark@mixtur.com> πŸ’œ


🚨 REPORTING BUGS 🚨

<https://github.com/tj/git-extras/issues>

(if something's cursed, tell the repo, not me, i'm just the messenger 🧚)


πŸ”₯ SEE ALSO πŸ”₯

<https://github.com/tj/git-extras>


okay that's the whole page, you ate it, i'm so proud of you. πŸ“ this was GIT-CHANGELOG(1) from the Git Extras era, dated May 2026 β€” go forth and generate changelogs, bestie, and remember: the vibe changes, but the facts stay exactly the same. periodt. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from