LoginSignup
0
4

More than 5 years have passed since last update.

git 複数のコミットを1つに圧縮する

Posted at

ファイル X,Y,Zを3回に分けて追加・コミットした。これらをひとつにまとめたい。

$ touch X
$ git add X
$ git commit -m "X"
$ touch Y
$ git add Y
$ git commit -m "Y"
$ touch Z
$ git add Z
$ git commit -m "Z"

ログで確認

$ git log HEAD~3..
commit 9e0944f5b0d51d67127a4256751163ba0490d154
Author: Nunocky <nunocky@example.com>
Date:   Wed Apr 11 13:55:54 2018 +0900

    Z

commit 5b461fe467c13b2c65e77b9346005ac6cc7f0fb3
Author: Nunocky <nunocky@example.com>
Date:   Wed Apr 11 13:55:47 2018 +0900

    Y

commit d01a3a6788abcf018d9ba77e6afcb391e67c0d43
Author: Nunocky <nunocky@example.com>
Date:   Wed Apr 11 13:55:37 2018 +0900

    X

rebaseを d01a3a6の一個前のところで -iオプションで実行、エディタを開く。

$ git rebase -i d01a3a6^

先頭3行を以下のように書き換え。 squashは「前のコミットに押し込める」の意。

pick d01a3a6 X
squash 5b461fe Y
squash 9e0944f Z

エディタを終了するとコミットが始まる。自動でテキストが入っているのでとりあえずそのままにして終了。

ログで確認

$ git log
commit 3c6afc8c7fb4b03b2454515c81e29412d8e75d6a
Author: Nunocky <nunocky@example.com>
Date:   Wed Apr 11 13:55:37 2018 +0900

    X

    Y

    Z
...

13:55:37に行ったコミット Xに Y,Zの追加も含まれるようになった。

0
4
0

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
0
4