自宅でお小遣い稼ぎをしたい主婦がアプリリリースを目指すブログです。この広告は、90日以上更新していないブログに表示しています。プログラミングこんにちは、マリンです。今日Gitでやらかしました。「ギャーーーー!!!」ってなったので残しておきます。対処法そもそも何が起こったのか?コミット取り消しの取り消しまとめ概要やらかした内容が多すぎるので、時系列で箇条書きします。~~で作ってしまった。テーブルを作った後しばらく作業を進めてからModelが無いことに気づく。db:rollbackしようとした。ロールバックする前に何を思ったかCommitをテーブル作る以前まで戻してしまった。HEAD@{n}でやってしまった。(ここが一番問題)ロールバックしようにも当然マイグレーションファイルまで消えてしまったのでできない。HEAD@{n}を使ってしまったことでしょう。--hardオプションをつけると、ワーキングツリーまで変更されてします。これに対する対処を次から書いていきます。対処法1、2、3まではおそらくModelファイルだけ作ってあげれば良かった話だと思うので省略します。4、5、6について詳細と対処法を記載しようと思います。HEAD@{n}これによって何が起こったのかを解説します。飛ばしていただいて結構です。reset:これは任意のcommitを取り消すコマンドです。:resetコマンドのオプションです。コミットだけでなく、ワーキングツリーまで元の状態に書き換えます。:HEADの位置をどこまで戻すかを指示しています。@{n}で遡ることn番目のcommitを表します。問題は真ん中の--hardオプションです。これによりワーキングツリーまで元の状態に戻ってしまったため、テーブル作成のために書いたマイグレーションファイルまで消えてしまいました。db:rollbackを実行する前にやってしまいました。該当のマイグレーションファイルが無いのにロールバックしたってできるわけがありません。reset)を取り消して、マイグレーションファイルを復活させる!それが今回の目標です。ちなみに問題のオプションですが、--softにを指定すればコミットだけをなかったことにしてくれます。他にもコミットとインデックスを取り消す--mixedもあります。オプション無しのデフォルトもこれです。こちらでより詳しく説明してくださっています。(--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法コミット取り消しの取り消しここからが本題です。消してしまった事実をなかったことにして、マイグレーションファイルを復活させます。logこちらが一連の流れです。reflog:まずどこまでコミットを戻すか履歴を見ます。logの履歴に出てこないからです。reflogは消されたコミットも履歴として見ることができます。HEAD@{n}:ここで取り消しを無かったことにします。今回は--hardオプションで大丈夫です。消えてしまったワーキングツリーのファイルを復活させたいので。HEAD@{n}のnにはログで確認した該当コミットが現在地から何番目にあたるかの番号を入れてください。log:最後に念のため確認をしましょう。この場合はこちらの履歴で大丈夫です。以上が解説になります。実例を交えたより詳しい説明をこちらでしてくださっていますので、ぜひご覧ください。備忘録日記まとめ今までadd、commit、pushくらいしかやってこなかったGitです。他のことはよくわからないから触りたく無かったし、そもそも何ができるのかも曖昧でした。今回初めて「履歴が残っている」ということの有り難みを感じました。基本は--softでやるのが安全だし、一般的な様ですね。HEADを取り消したい!!Tweet広告を非表示にする関連記事2017-03-26画像が表示されないからfogとかS3とか使う。こんにちは、マリンです。»プロフィールid:song-of-life1352607アラサーで思い立ってプログラミングを始めた主婦が、自宅でお小遣い稼ぎをしたいがために自作アプリのリリースを目指すブログです。【Git】ブランチ間違えてコミットしてた!?月別アーカイブ参加グループプログラミングはてなブログをはじめよう!song-of-life1352607さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。