guilt - Man Page

quilt on top of git

Synopsis

guilt COMMAND [ARGS]

Description

Andrew Morton originally developed a set of scripts for maintaining kernel patches outside of any SCM tool​. Others extended these into a suite called quilt​. The basic idea behind quilt is to maintain patches instead of maintaining source files​. Patches can be added, removed or reordered, and they can be refreshed as you fix bugs or update to a new base revision​. quilt is very powerful, but it is not integrated with the underlying SCM tools​. This makes it difficult to visualize your changes​.

Guilt allows one to use quilt functionality on top of a Git repository​. Changes are maintained as patches which are committed into Git​. Commits can be removed or reordered, and the underlying patch can be refreshed based on changes made in the working directory​. The patch directory can also be placed under revision control, so you can have a separate history of changes made to your patches​.

Patches Directory

In Guilt, all the patches are stored in ​.git/patches/$branch/, where $branch is the name of the branch being worked on​. This means that one can have a independent series of patches for each branch present in the repository​. Each of these per-branch directories contains 3 special files:

guards: This file contains any guards that should be applied to the series when pushing​. It is only present when guards are selected​.

series: This file contains a list of all the patch filenames relative to the per-branch patch directory​. Empty and commented out lines are ignored​.

status: This file contains the state of the stack​. What patches are applied​.

Hooks

Any guilt operation may execute zero or more hook scripts which can be used to run any housekeeping commands or even abort the execution of the command​.

Hooks Directory

Guilt follows the same basic design of hooks in Git itself​. All Guilt hooks are executable files (generally shell scripts, but they can be anything the operating system can execute) in ​.git/hooks/guilt/​.

The following hooks are supported:

delete <patch name>

Executed when a patch is deleted from the patch series via guilt-delete(1)​.

Guilt Commands

All commands must be called without a dash​. e​.g​. guilt add

guilt-add(1)

guilt-add - Add a file to git and guilt​.

guilt-applied(1)

guilt-applied - List applied patches​.

guilt-branch(1)

guilt-branch - Branch the entire patch series​.

guilt-commit(1)

guilt-commit - Commit specified number of patches​.

guilt-delete(1)

guilt-delete - Delete a patch​.

guilt-diff(1)

guilt-diff - Outputs various diffs​.

guilt-export(1)

guilt-export - Export a patch series (to be used by quilt)​.

guilt-files(1)

guilt-files - Print the list of files that the topmost patch changes​.

guilt-fold(1)

guilt-fold - Fold a patch into the topmost applied patch​.

guilt-fork(1)

guilt-fork - Fork the topmost applied patch​.

guilt-goto(1)

guilt-goto - Push or pop patches to reach a named patch​.

guilt-graph(1)

guilt-graph - Create a patch dependency graph​.

guilt-guard(1)

guilt-guard - Assign guards to patches​.

guilt-header(1)

guilt-header - Print a patch header​.

guilt-help(1)

guilt-help - open man page of a guilt command​.

guilt-import-commit(1)

guilt-import-commit - Import one or more commits as patches​.

guilt-import(1)

guilt-import - Import specified patch file​.

guilt-init(1)

guilt-init - Initialize guilt for use in a git repository​.

guilt-new(1)

guilt-new - Create a new patch​.

guilt-next(1)

guilt-next - Output the name of next patch to be pushed​.

guilt-patchbomb(1)

guilt-patchbomb - Email a series of commits interactively​.

guilt-pop(1)

guilt-pop - Pop patches from the tree​.

guilt-prev(1)

guilt-prev - Output name of second topmost applied patch​.

guilt-push(1)

guilt-push - Push patches onto the tree​.

guilt-rebase(1)

guilt-rebase - Rebase pushed patches​.

guilt-refresh(1)

guilt-refresh - Refresh topmost applied patch​.

guilt-rename(1)

guilt-rename - Rename a patch​.

guilt-repair(1)

guilt-repair - Repair the repository state​.

guilt-rm(1)

guilt-rm - Remove a file from the git tree and guilt​.

guilt-select(1)

guilt-select - Select guards to apply when pushing patches​.

guilt-series(1)

guilt-series - Print the stack of patches​.

guilt-status(1)

guilt-status - Print the status of files since the last refresh​.

guilt-top(1)

guilt-top - Output name of topmost applied patch​.

guilt-unapplied(1)

guilt-unapplied - List all unapplied patches​.

Author

Written by Josef "Jeff" Sipek <jeffpc@josefsipek​.net​[1]>

Documentation

Documentation by Brandon Philips <brandon@ifup​.org​[2]> and Josef "Jeff" Sipek <jeffpc@josefsipek​.net​[1]>

Guilt

Part of the guilt(7) suite (Generated for Guilt v0​.37​.1)

Notes

  1. jeffpc@josefsipek.net
    mailto:jeffpc@josefsipek.net
  2. brandon@ifup.org
    mailto:brandon@ifup.org

Referenced By

guilt-add(1), guilt-applied(1), guilt-branch(1), guilt-commit(1), guilt-delete(1), guilt-diff(1), guilt-export(1), guilt-files(1), guilt-fold(1), guilt-fork(1), guilt-goto(1), guilt-graph(1), guilt-guard(1), guilt-header(1), guilt-help(1), guilt-import(1), guilt-import-commit(1), guilt-init(1), guilt-new(1), guilt-next(1), guilt-patchbomb(1), guilt-pop(1), guilt-prev(1), guilt-push(1), guilt-rebase(1), guilt-refresh(1), guilt-rename(1), guilt-repair(1), guilt-rm(1), guilt-select(1), guilt-series(1), guilt-status(1), guilt-top(1), guilt-unapplied(1).

08/27/2026 Guilt v0.37.1 Guilt Manual