2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-26

##今回解決したい状況
すでにリモートの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で部分的にコミットする方法]
(https://qiita.com/miyohide/items/79ab0ff3b3852289a6be)

その後、

git rebase --continue

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

###4.リモートへ反映

git push origin master

とする.

###5.一時退避していた作業内容を戻す
stashしていた作業内容を戻すには、

git stash pop

とする.

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

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

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?