Git
GitHub
branch
commit
reset

【個人開発】git pushを取り消して、branchを変更しもう一度 git push する方法

今回起きた問題

  • 以下の流れで作業してしまった
    • masterブランチで作業
    • ステージング
    • git commit
    • GitHubにpush

どうしたかったのか?

本来であればbranchを新たに作って作業し、そのブランチをGitHubにpushしたかったのだが、ついうっかりしてしまい上記の手順で、master branchをpushしてしまったのである。

解決した方法

注意【このやり方はチームでの開発ではお勧めできません】
まずは以下の方法で、最新のコミットを取り消し、プロジェクトをコミット前の状態に戻します。
--softは「変更した内容は残る」、HEAD^は「一つ前のコミット」です。
実行するとプロジェクトがコミット前の状態に戻り、変更した内容は残ります。

$ git reset --soft HEAD^

次にコミット前の状態に戻ったプロジェクトをGitHubにpushして、前のpushを取り消します。
[ -f ]を付けずにpushすると、pushする内容が古いのでエラーが出ます。
[ -f ]を付けることで強制的にpushさせています

$ git push -f origin master

ここまででGitHubは前の状態に戻っているはずです。


ここからはbranchを変更してpushするまでを解説します。

まずはプロジェクトの変更した内容とステージングエリアを一時撤退させます。

$ git stash

そして、branchを移動、もしくは新たに作成します。今回は新たに作成しました。

$ git branch -b 新ブランチ名

新たに作成し移動したbranchで以下コマンドを実行することで、直前に一時撤退した内容をこのbranchで元に戻します。これで、新しいブランチにmasterで変更した内容を持ってこれました。

$ git stash pop

最後に新しいブランチでpushして目的は完了した。

$ git add -A
$ git commit
$ git push origin 新ブランチ名

gitもコマンドが色々あるのだと実感しました。まだまだ覚えることがたくさんのようです。日々精進