---
name: "git-ime"
section: "1"
platform: "linux"
package: "imediff"
version: "3.4.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/git-ime"
---

# git-ime(1)

An interactive git commit split helper tool

## NAME

git-ime - An interactive git commit split helper tool

## SYNOPSIS

**git-ime** \[**-a**\] \[**--auto**\] \[**-n**\] \[**--notag**\] \[**-v**\] \[**--verbose**\] \[**-h**\] \[**--help**\]

## DESCRIPTION

This **git ime** is a simple shell wrapper script on **git** and **imediff** to split the latest commit from HEAD^ to HEAD on the current git repository into multiple commits.

If any staged changes or local uncommitted changes are found in the git repository, **git ime** immediately exits without changes to be on the safe side.

If the latest commit involves multiple files, **git ime** splits this big commit into multiple smaller commits involving a single file for each commit. When the first line of the commit message is "-", each split commit message becomes just filename only.

If the latest commit involves only a single file, the commit is split into multiple smaller commits involving a set of meaningful partial changes selected by **imediff** interactively. The log of **imediff** is stored in the .git/imediff.log file

This **git-ime** is not only useful at the checked out branch head but also at "edit" prompt during the interactive execution of **git rebase -i** *treeish*. Execute **git-ime** after committing the pending commit.

To preserve good accessibility to the original state, this **git-ime** tags the original commit with "git-ime-aYYYYMMDD-HHMMSS" if it hasn't been tagged. Also this **git-ime** tags its final commit with "git-ime-zYYYYMMDD-HHMMSS" for the convenience of subsequent operations such as **git-rebase**. This is not applicable during **git-rebase** .

Please note this **git-ime** creates or overwrites *file*.tmp\_a and *file*.tmp\_b files. So they should not exist before execution of this command.

## OPTIONS

- **-a**, **--auto**

  When operating on a single file change commit, the **git ime** command executes **imediff** with **--macro "Abw"** to select a series of minimum partial changes automatically and repeatedly to create a series of commits, instead.

- **-v**, **--verbose**

  The **git ime** command is executed with verbose console outputs.

- **-n**, **--notag**

  Disable automatic tagging feature. Since the use of this option is desirable if this **git ime** command is used during the **git rebase** operation. In such case, this is automatically turned on as the default behavior.

- **-h**, **--help**

  The **git ime** outputs help message.

## SEE ALSO

[imediff(1)](/imediff/1.md), [git(1)](/git/1.md), and [git-rebase(1)](/git-rebase/1.md).

## COPYRIGHT

This manual page as well as the program itself was written by Osamu Aoki (\<osamu@debian.org\>). This document has been placed into the Public Domain.

## AUTHOR

**Osamu Aoki**

Original author of this script.

## COPYRIGHT

Copyright © 2018-2021 Osamu Aoki \<osamu@debian.org\>\
