commitdog merge merges another local branch into the branch you are on. Before anything touches your history, it shows every mergeable branch with its diff stats and whether the merge would conflict. After a clean merge, commitdog generates a detailed merge commit message from all the commits on that branch, grouped by type, and lets you use it, edit it, or keep git’s default.
Usage
Merge flow
1
Pick a branch
commitdog lists every other local branch that has changes relative to your current branch, with added and removed lines, file count, and conflict status:Branches with no changes against your current branch are hidden. The conflict status comes from a dry-run merge that commitdog performs and aborts, so you know before committing to anything.
2
Preview the changes
After you pick a branch, commitdog prints a per-file diff stat (up to 10 files) and offers a full diff view:Choosing
2 opens a colorized diff, paged 40 lines at a time. Press Enter for more or q to go back to the menu.3
Merge
Choosing
1 runs the merge with --no-ff, so a merge commit is always created:4
Review the generated merge commit message
commitdog reads every commit on the merged branch (excluding merge commits) and builds a merge commit message with a summary subject and sections grouped by type: features, bug fixes, security, removed, refactoring, and documentation.
- Enter amends the merge commit with the generated message.
eopens the message in$EDITORso you can adjust it before it is applied.sskips the generated message and keeps git’s default merge commit message.
5
Push
commitdog confirms the merge and asks whether to push:
Conflict handling
If you pick a branch markedconflict, commitdog warns you before merging:
1 starts the merge without committing, lists every conflicted file, and opens them in your editor ($EDITOR, then $VISUAL, falling back to vi). With a single conflicted file, it opens immediately. With several, you pick which file to open:
The generated merge commit message is only offered on clean merges. Conflicted merges use the standard git commit flow after you resolve the files.