今回はGithubでブランチを切り忘れて、リモートマスターにpushしてしまった時の対処法を書きます。
今回のゴール
・マスターブランチを元に戻す
・元に戻した段階でnewブランチを作成。
・元に戻すまでの内容をnewブランチに載せて、pushする
・プルリクエストを行う
はじめに
ローカル上でブランチを切り忘れて、リモートブランチにプッシュしてしまうことはたびたびあると思います。しかし、正しい対処法を講じれば全く問題ないことです。
手順の確認
以下の4ステップで覚えておくと良いでしょう。
1.githubデスクトップで revert する
2.ブランチを切る
3.git cherry-pick でリバートを復元する
4.コミット、プルリクエスト
1.githubデスクトップでrevertする
Github上でリバートする方法はHistoryの中の元に戻したいコミットを選択し、右クリックでRevertChanges in Commitを選択します。↓
revertしたコミットはRevert"〜"という形で新たにヒストリーに追加されます。
リバートした内容はHistoryに残るため、後の作業で復活させることができます。
また、この作業はでローカルのマスターブランチとリモートのマスターブランチ両方に作業が反映されますので、リモートのマスターブランチ上でも"データベース設計の構築"がrevertされなくなっております。
ここまでで一度、テキストエディタでコードが元に戻っているかを確認しましょう。
2.ブランチを切る
Git hubでブランチを切ります。GitHub desktopsの上部メニュー:current branchを選択し、new branchでブランチを作成します。
ブランチが作成されましたので、当該ブランチにrevertした内容を復元してプルリクエストを行います。
3.git cherry-pick でリバートを復元する
GitHub desktopのヒストリーで元に戻したいcommitで右クリックして Copy SHA を選択します。この操作ではヒストリーのリバートした内容の番号を取得します。貼り付ける場合はcommand+Vで貼り付けできます。↓
ターミナル上で、対象となるアプリケーションのディレクトリにいることを確認し、revertしたcommitを復元させるコマンドを入力します。
git cherry-pick (command+Vで取得した番号を貼り付け)↓
このコマンドを実行すると、リバートした内容がGit hub desktopのcommit欄に戻ります。この内容をcommitし、pushするとnewブランチでプルリクエストが可能です。↓
以上で、masterブランチを元に戻し、newブランチを作成してプルリクエストする作業は終了です。
総括
今回の作業は、commitの内容を消す・復元することを行いましたので、小まめにcommitを行っていることが、前提となっております。
そのため、小まめにGitHubにてcommitを行うことを心がけましょう。