<p>Suppose you have:</p>

<pre><code>A-B-C
</code></pre>

<p>Now your build/test fails. The fix should be merged in A. 
My current work-flow is like this:</p>

<pre><code>$ git commit -m "fixA"

A-B-C-fixA

$ git rebase -i A~1
</code></pre>

<p>And squash fixA in A, result in: </p>

<pre><code>A'-B-C
</code></pre>

<p>Is there a command to do something like:</p>

<pre><code>A-B-C + (index with fix for A)

$ git commit -supperdupper A 
</code></pre>

<p>Result:</p>

<pre><code>A'-B-C
</code></pre>

If you're just looking for the easy solution for fixing up earlier commits, read the question! It explains it all. But since Elmarco was asking for a slick way, here we go:
As of Git 1.7.0, there is an
```
--autosquash
```
option for
```
rebase
```
, which does what you want.  There is also the
```
--fixup
```
and
```
--squash
```
options for
```
commit
```
to make things easier.  With some aliasing you can probably even get the whole thing into a single command.
I'd suggest upgrading to the newest Git for maximum awesomeness:
```
```
git/Documentation/RelNotes $ grep -i -A1 autosquash\\\|fixup *
1.7.0.txt: * "git rebase -i" learned new action "fixup" that squashes the change
1.7.0.txt-   but does not affect existing log message.
--
1.7.0.txt: * "git rebase -i" also learned --autosquash option that is useful
1.7.0.txt:   together with the new "fixup" action.
1.7.0.txt-
--
1.7.3.txt: * "git rebase -i" peeks into rebase.autosquash configuration and acts as
1.7.3.txt:   if you gave --autosquash from the command line.
1.7.3.txt-
--
1.7.4.txt: * "git commit" learned --fixup and --squash options to help later invocation
1.7.4.txt-   of the interactive rebase.
--
1.7.4.txt: * "git rebase --autosquash" can use SHA-1 object names to name which
1.7.4.txt:   commit to fix up (e.g. "fixup! e83c5163").
1.7.4.txt-
```
```