This is something a bit like git-add -i, except not depending on perl, and partially crossed with git-commit. Usage: $0 [arg [arg ...]] 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: - Choose a diff hunk to be included. - Commit chosen hunks. - Split 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. If the commit --amend is aborted, the commit created by git-fast-import is backed out. (There are lots of race conditions with unpleasant consequences if other commits are happening to the same branch at the same time. This is not intended for workflows that do that.)