LoginSignup
14

More than 5 years have passed since last update.

Gitで2つ以上前のコミットに統合する

Last updated at Posted at 2015-07-14

一つ前のコミットに統合するのはgit commit --amend -C HEADとかでいけるんだけど2つ以上前になるとめんどい。

CTO殿にautosquashを教えてもらった。

こういうやつ。

しかしrebase -i --autosquashはエディタ立ち上がって一発でできる感じじゃないのでどうにかできないかなと思って調べたらGIT_EDITOR=:って指定するとGitのエディタ起動する部分をそのまま保存して終了っていう動作になるらしいのでこれを使えばいけそうというのがわかった。

$ GIT_EDITOR=: git rebase -i --autosquash $COMMIT

こんな感じのaliasを作る。

[alias]
    fixup = !sh -c 'COMMIT=`git rev-parse ${1:-HEAD}` && git commit --fixup=$COMMIT && GIT_EDITOR=: git rebase -i --autosquash ${COMMIT}^' -

これで変更をgit addした状態で

$ git fixup         # 一つ前(HEAD)と統合
$ git fixup HEAD^   # 二つ前と統合
$ git fixup <sha1>  # 指定のコミットと統合

って感じになる。

rebaseでコンフリクトしてabortしたりするとfixupなコミットが残るけどまあそのぐらいはいいかな。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14