This is something a bit like git-add -i, except not depending on perl, and partially crossed with git-commit. Usage: $0 [file [file ...]] Runs git diff with the same arguments. Any non-text diffs, new files, or deleted files cause an immediate error out. Text diffs are accumulated; each diff hunk is remembered separately. The user interface allows the user to, repeatedly, choose from: - Quit. - Choose a diff hunk to be included. - Commit chosen hunks. Committing works by constructing a git-fast-import pack for the new commit, then running git-commit --amend to let the user supply (edit, really) the commit message. The major side effect of this is that `aborting' the commit by giving an empty message does not back out the whole thing, only the editing of the message; there is still a commit created with an empty commit message.