git: squash/fixup earlier commit

前端 未结 6 1162
野的像风
野的像风 2020-12-03 01:42

Suppose you have:

A-B-C

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

$ git         


        
6条回答
  •  -上瘾入骨i
    2020-12-03 01:50

    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-
    

提交回复
热议问题