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

リモートへのpushを修正する(僕が思う)一番簡単な方法

More than 1 year has passed since last update.

今回解決したい状況

すでにリモートのmasterへpush済みの最新のcommitに修正を加えたい(今回は分割したい).

手順

1.リモートの該当コミットを削除

今回は、最新のコミットを削除したいため

git push -f origin HEAD^:master

のようにし、リモートの街頭コミットを削除.
(最新から2個目のコミットの場合は、HEAD^^:masterのようにする。)

2.ローカルの作業内容を一時退避(該当コミットの後に、別の作業を進めていた場合)

git stash

として、現在の作業内容を一時退避する.

3.ローカルの該当commitの内容を修正

まず、

git rebase -i HEAD^

とする.
(※この際に、ローカルで新しい作業内容が存在するとエラーとなるため、上記にあるstash作業を行う)

次に、

pick 8e9fe0a index.htmlを修正

のような表記が上部にあらわれるため、これを

edit 8e9fe0a index.htmlを修正

とすることで、このcommitを修正できる.

よって、この後は、まず

git reset HEAD^

とし、commitの内容をadd前へ戻した後、今回の例では、分割を行いたいため、
はじめにcommitしたい内容をadd&commitした後、次にcommitしたい内容をadd&commitする.

その際に、同一ファイル内でも、編集箇所ごとにaddを分けたい場合はこの記事を参照.
Gitで部分的にコミットする方法

その後、

git rebase --continue

とすることで、ローカルのcommitが分割された.

4.リモートへ反映

git push origin master

とする.

5.一時退避していた作業内容を戻す

stashしていた作業内容を戻すには、

git stash pop

とする.

以上で、ローカル, リモート共に修正が完了した。

参考ページ

Git のさまざまなツール - 歴史の書き換え
【git】git pushを取り消す
[git]特定のコミットの内容を修正する
git-rebase - 過去のコミットを修正したい(コミット分割、内容訂正・追加)
gitでコミットしたものを後から複数のコミットに分割する方法

Why do not you register as a user and use Qiita more conveniently?
  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