Help us understand the problem. What is going on with this article?

gitで直近のcommitと2つ以上前のcommitをまとめる

More than 1 year has passed since last update.

直近のcommitと1つ前のcommitをまとめるのはやったことあったけど、掲題の件をやりたくなったのは初めてなので。

シチュエーション

  1. Aの修正を行ってcommitした
  2. Bの修正を行ってcommitした
  3. Aの修正ミスに気づいて再修正してcommitした

1と3のcommitをまとめたい!

git rebaseだけでうまくいく

HEADの3つ前まで、つまり上記の1,2,3のcommitを全て対象にしてrebaseコマンドを叩く

git rebase -i HEAD~~~

すると

pick commit_no_1 commit_message
pick commit_no_2 commit_message
pick commit_no_3 commit_message

て感じの画面がエディタで開く。

当たり前なのかもしれないが、この画面でcommitの位置を変更することができる。
つまり、rebaseでcommitの時系列も変更できる。

今回は3を1にまとめたいので、

pick commit_no_1 commit_message
pick commit_no_3 commit_message
pick commit_no_2 commit_message

こうする。

そして

pick commit_no_1 commit_message
fixup commit_no_3 commit_message
pick commit_no_2 commit_message

としてやることで、commit_no_3が手前のcommit_no_1にまとめられる。

あとはpushすればいいだけ!
カンタン。

Ishidall
何でも屋さんになりつつある。サーバーサイドを中心から全体に染み出している。Node.jsとAngular1系、Vue.js、Express.jsに慣れている。CSS雰囲気で書くマン。ML/DL回りを勉強したくて転職したが、なぜかSwift書く必要がでてきた上に最終的にはTypeScriptを書いていたので辞めて起業しました。結局TS書いてる問題が常に勃発。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away