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

Git rebaseした結果を強制的にリモートブランチに書き込みたいとき

More than 5 years have passed since last update.

以前に何回かrebaseはしたことがあったのですが、いつもやり方を忘れてしまうので、メモ。たぶんそこら中に同じような記事が載っているので私のはあまり参考になりません。ほんとにただのメモです。
今回はrebaseしてコミットログを書き換えたはいいけどもう既にpushしちゃってるんですけどというシナリオ。あるあるですね。

まずrebase

git rebase -i HEAD~4

でインタラクティブモードに入って

コミットログを書き換えたいコミットを pick から e に変更します。
vimを保存して終了。

次は

git commit ––amend

でコミットログの修正。終わったら保存。これでコミットが修正されます。

で、以下のコマンドで次のコミットに移動

git rebase ––continue

最後までやったら

Successfully rebased and updated refs/heads/master.

と出るのでこれで完了。

リモートブランチにpushする

––force オプションで強制的にリモートブランチにpushします。

git push ––force

ただし、このやりかたをするならそのリモートブランチが自分以外ほとんどいじる機会がないことを確認してからやるのがいいかもしれません。他の人が頻繁にpush, pullしてるブランチにこれをやったらどうなるかは想像もつきません。

参考文献

wnoguchi
Software Engineer(Server, Network): Design, Implementation, Operation. Infrastructure Division.
https://pg1x.com/
unicast
ユニキャストは、茨城大学工学部発の学生ベンチャー企業として、2005年に産声をあげました。 ミッションである『テクノロジを通じて「驚き」と「感動」を創造し、人々の「夢」と「希望」を支えます。』を合言葉に、これからも幅広く価値発信してまいります。
http://www.unicast.ne.jp/
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