質問: ### 前提・実現したいこと 過去のコメントを修正しようとして間違った操作をしてしまったのをもとに戻したいです 状況としては * リモートブランチ * ローカルマスタ * 作業ブランチ1 * 作業ブランチ2 * 謎のブランチ が絡んでいます ブランチ1で作業を終え、リモートにpushしました。 次の作業を行いたかったのでローカルマスターにチェックアウトしブランチ2を作成。作業を始めようと思ったのですが、ブランチ1で実装したものが必要だと気づき、ブランチ1をマージしました。 それから普通に作業をしていき(pushはしていない)、git logを見てみると、マージしたときのコメントが文字化けしていました。 **ここらが問題です** 5つ前のコメントを修正するべきだったのですが、4つ前と勘違いしていまして、`git rebase -i HEAD~4`と打ち込みました。 しかし、違うと気づき戻ろうと思ったのですが、`ZZ`で終了しました。(入力はなにもしていませんが、なにか保存されてしまうのでしょうか) そして、キャンセルしたからさっき4と打ったところを5にすればいいだろうと思い`git rebase -i HEAD~5`を入力。 表示されていたのは求めていたコミットではなかったので`:q!`で終了 すると謎のブランチが出来上がっていて、そのブランチにチェックアウトしていました。 謎のブランチ名はとあるコミット番号が割り振られています。 そのコミットは私が行ったものではありません。 `git log`を見るとそのコミットが先頭にきています `git br`では`* (no branch, rebasing ブランチ2)`とあります。 statusは以下のとおりです ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/5b605ff15cf2ff9e0f66cce75baaae65.png) チェックアウトしようとすると ``` app/controllers/xxxxxx_controller.rb: needs merge error: you need to resolve your current index first ``` となります。 `git reset`で戻せますか?
回答: こんにちは。 ややこしい操作されているようで、ちょっと追いかけられなかったのですが、reflogを使って戻せる筈です。 gitは1ヶ月程度の過去の履歴が全て残っているようです。(ちょっと自信なし) それを表示するのがreflogです。そこに目的の状態が残っていれば戻せる筈です。 私もreflogはあまり使ったことはないので詳しくは検索してみて下さい。多数の解説サイトがあります。