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

git rebase -iしない

More than 5 years have passed since last update.

Gitで過去のコミットを改変する際にはgit rebase -iを用いるのが一般的ですが、私はささいな変更のとき以外は使いません。git rebase -iを使うと、--continueしてconflictが多発したときに、よくわからなくなって--abortしたくなるからです。

私が過去のコミットを改変するときは、まずそのコミットからブランチを作ります。たとえば、以下の履歴でBを改変するときは、まずgit checkout -b rebase/b Bとしてブランチを作ります。

A-B-C-D-E develop
rebase/b
  ↓
A-B-C-D-E develop

Bを修正してgit add; git commit --amendします。

  B' rebase/b
 /
A-B-C-D-E develop

次に、B'にC-D-Eをつなげていきます。conflictしそうにないときは、git rebase --onto rebase/b B developで一気につなげます。

A-B'-C'-D'-E' rebase/b develop

rebase中によくわからなくなりそうなときは、cherry-pickで一つずつつなげます。git cherry-pick Cすると以下のようになります。conflictしたら直してください。

A-B'-C' rebase/b
\
 B-C-D-E develop

続いてgit cherry-pick Dします。

A-B'-C'-D' rebase/b
\
 B-C-D-E develop

残りはEだけなのでrebaseします。git rebase --onto rebase/B D developとすると以下のようになります。これで完成です。

A-B'-C'-D'-E' rebase/b develop

そもそも、rebase中によくわからなくなりそうなほど、古いコミットを大きく書き換えるのが悪いのですが、そういうときでもこの手順ならうまく処理できると思います。

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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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